Blog Null Reference Exception
Instaloval jsem na domenovém controleru Windows Server 2012 roli AD FS (Active Directory Federation Services). Při nastavení databáze na používání Windows Internal Database, jsem obdržel následující chybu:
Service 'Windows Internal Database (MSSQL$MICROSOFT##WID)' cannot be started due to the following error: Cannot start service MSSQL$MICROSOFT##WID on computer '.'.
Polymorfismus v jazyku C# striktně zajišťuje, že na instanci odvozené třídy je vždy volána přepsaná (override) implementace virtuální metody. Toto platí nejen například při přetypování dané instance zpět na typ základní třídy, ale i při volání metody základní třídy pomoci reflection.
Ve WPF lze vytvořit attached události - Attached Events, někdy také nazývané Custom routed events. Ty nám obdobně jako Attached Dependency Properties, umožňují k libovolnému UIElementu přidat vlastní v tomto případě událost, kterou můžeme na elementu vyvolávat a odchytávat. Ve WPF se toto provádí pomoci třídy EventManager, kterou lze jako attached události registrovat přímo RoutedEvent.
V Silverlightu bohužel attached události nejsou implementované, viz msdn:
“Silverlight does not support creating a custom routed event. The only routed events available in Silverlight are the ones that are defined by existing Silverlight classes, as listed in the "Routed Events" section of Events Overview for Silverlight.” (viz. také Routed Events in Silverlight)
Předpokládejme, že máme datovou strukturu obsahující tyto tři tabulky.
Z těchto tabulek budeme chtít načíst data najednou tímto jedním SQL dotazem.
Předpokládejme dále, že naše datová vrstva umí načtená data vrátit pouze v podobě “flat” sekvence objektů, jehož podoba odpovídá vracenému resultsetu.
Našim úkolem je přetransformovat sekvenci těchto objektů do objektové reprezentace, která by odpovídala původním tabulkám.
V .NET rozlišujeme lokalizaci a globalizaci:
•Lokalizace – Zobrazování textů v aplikaci v některém z jazyků (language), do kterého je aplikace přeložena. V .NET nám nastavený jazyk vrací vlastnost System.Globalization.CultureInfo.CurrentUICulture.
•Globalizace – Nastavení formátování čísel, data, času apod. podle zvyklostí daného národa (region) - kultury. V .NET nám nastavený jazyk vrací vlastnost System.Globalization.CultureInfo.CurrentCulture.
Tyto vlastnosti můžeme podle potřeby a scénáře buď přebírat z nastavení Windows nebo je nechat přímo v aplikaci zvolit uživatelem. Konkrétně v ASP.NET aplikacích můžeme celkem snadno dosáhnout toho, aby bylo toto nastavení převzato z preferencí prohlížeče, nastavením globalization ve web.config souboru:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto" />
Pokud se pohybujeme v oblasti JavaScriptu a jQuery, existují sice některé řešení globalizace (jako například jQuery Globalization Plugin). Zdá se ale, že se zde tento model lokalizace vs. globalizace úplně vytrácí a neřeší se.
Pří zavádění jQuery UI DatePicker kontrolu do ASP.NET aplikace jsem si místo toho připravil vlastní jednoduchou třídu, která se stará o jeho inicializaci tak, aby respektovala .NET nastavení jak lokalizace CurrentUICulture tak i globalizace CurrentCulture.
Pokud v ASP.NET aplikaci používáme technologii WIF, zpravidla využíváme HTTP modul SessionAuthenticationModule. Ten se stará o to, že po přihlášení je vytvořeno cookie, které obsahuje serializované claims přihlášeného uživatele a při každém requestu provádí rekonstrukci objektu ClaimsPrincipal z dat obsažených v tomto cookie.
Před nějakou dobou jsem zde uvedl řešení ošetření chyb vlastní chybovou stránkou a ošetření neexistující URL stránkou NotFound (404) v ASP.NET a IIS 7. Popis byl jako součást ukázkové ASP.NET aplikace FileAccessWeb v článku ASP.NET FileAccessWeb Sample, část 4: Ošetření chyb.
Protože požadavky, zkušenosti i technologie ASP.NET se vyvíjí, přináším zde nyní řešení nové.
Dnes pár poznámek a tipů, které jsem nasbíral při vývoji nové web aplikace v ASP.NET 4.5. Aplikace využívá technologie ASP.NET WebForms, HTML 5, jQuery, jQuery.UI, bootstrap a Bundling & minification(AspNet.Web.Optimization), o kterých bude řeč.
Pokud vytváříte certifikáty například pro Remote Desktop, TS Gateway, TS Web Access a podobně, je nutné mít ve své PKI infrastruktuře na certifikační autoritě fungující a správně nastavené publikace CRL (Certificate Revocation List). (Klasická chyba, kterou dostáváme, když toto nemáme správně nastaveno je A revocation check could not be performed for the certificate).