Blog Null Reference Exception - červenec 2012
Pokud používáte ve své aplikaci technologii WIF v současné verzi pro .NET Framework 3.5/4.0 (verze 1.0), brzy zjistíte, že dotazování na claims obsažené v objektu ClaimsIdentity resp. ClaimsPrincipal je poměrně složité (je nutné použít buď LINQ dotaz nebo foreach cyklus).
Po integraci WIF přímo do .NET Frameworku v připravované verzi 4.5 (nyní k dispozici v RC) dojde v tomto k výraznému posunu. A mezitím než se tak stane jsem připravil extension metody, které portují metody nové verze i do verze současné.
Minule jsme skoro dokončili naší ukázkovou ASP.NET aplikaci pro přístup k souborům (její kompletní zdrojové soubory jsou k dispozici zde). V této poslední části doplníme ještě ošetření případných chyb aplikace a vytvoříme vlastní stránky pro Error a 404 (NotFound).
V této předposlední části naší ukázkovou aplikaci z minula v podstatě dokončíme implementací stránky Default.aspx, která bude zobrazovat seznam souborů. A dále do aplikace vložíme handler na stahování souborů.
V první části jsme tvorbu naší ukázkové webové aplikace pro přístup k souborům skončili tím, že jsme vytvořili Mater Page a dvě stránky Default a Login, které budeme postupně doplňovat. V této části dokončíme stránku Login, přidáme kód pro přihlášení a provedeme potřebné nastavení ve Web.config souboru.
V této čtyř dílné sérii budu postupně popisovat postup vytvoření jednoduché ASP.NET aplikace pro umožnění přístupu k souborům pro přihlášené uživatele. Nepůjde jen o aplikaci samotnou, ale hlavně si ukážeme některé záležitosti dnešních ASP.NET WebForms aplikací. Některé řešené věci budou určitě využitelné i v jiných aplikacích. Také je možné, že některé tyto záležitosti mnozí z vás znáte (nebo je řešíte trochu jinak), ale věřím, že někteří si některé novinky z této série odnesou.
Pokud například v nějaké knihovně implementujeme veřejné třídy pro vlastní výjimky, měli by tyto třídy být implementované jako serializovatelné objekty. Obecně totiž nemusíme vědět, zda se nevyskytne případ, kdy exception objekt bude muset překročit hranici aplikační domény a pak by chybná implementace vadila.