Konfigurace a instrumentace
od Microsoftu
Poznámka
Od napsání tohoto článku jsou zprostředkovatelé členství ASP.NET nahrazeni ASP.NET Identity. Důrazně doporučujeme aktualizovat aplikace tak, aby používaly platformu ASP.NET Identity Platform místo zprostředkovatelů členství, které byly uvedené v době psaní tohoto článku. ASP.NET Identity má oproti systému členství ASP.NET řadu výhod, mezi které patří:
- Lepší výkon
- Vylepšená rozšiřitelnost a testovatelnost
- Podpora OAuth, OpenID Connect a dvojúrovňového ověřování
- Podpora identit na základě deklarací identity
- Lepší interoperabilita s ASP.Net Core
V ASP.NET 2.0 došlo k významným změnám konfigurace a instrumentace. Nové rozhraní API konfigurace ASP.NET umožňuje provádět změny konfigurace prostřednictvím kódu programu. Kromě toho existuje mnoho nových nastavení konfigurace umožňujících nové konfigurace a instrumentaci.
V ASP.NET 2.0 došlo k významným změnám konfigurace a instrumentace. Nové rozhraní API konfigurace ASP.NET umožňuje provádět změny konfigurace prostřednictvím kódu programu. Kromě toho existuje mnoho nových nastavení konfigurace umožňujících nové konfigurace a instrumentaci.
V tomto modulu se budeme zabývat ASP.NET konfiguračním rozhraním API, které souvisí se čtením z konfiguračních souborů a zápisem do ASP.NET konfiguračních souborů, a také se budeme věnovat ASP.NET instrumentaci. Budeme se také zabývat novými funkcemi, které jsou k dispozici v ASP.NET trasování.
rozhraní API pro konfiguraci ASP.NET
Rozhraní API konfigurace ASP.NET umožňuje vyvíjet, nasazovat a spravovat konfigurační data aplikací pomocí jediného programovacího rozhraní. Pomocí rozhraní API pro konfiguraci můžete programově vyvíjet a upravovat kompletní konfigurace ASP.NET bez přímé úpravy XML v konfiguračních souborech. Kromě toho můžete rozhraní API konfigurace používat v konzolových aplikacích a skriptech, které vyvíjíte, ve webových nástrojích pro správu a v modulech snap-in konzoly MMC (Microsoft Management Console).
Následující dva nástroje pro správu konfigurace používají rozhraní API konfigurace a jsou součástí rozhraní .NET Framework verze 2.0:
- Modul snap-in ASP.NET MMC, který používá rozhraní API konfigurace ke zjednodušení úloh správy a poskytuje integrované zobrazení místních konfiguračních dat ze všech úrovní hierarchie konfigurace.
- Nástroj pro správu webu, který umožňuje spravovat nastavení konfigurace pro místní a vzdálené aplikace, včetně hostovaných webů.
Rozhraní API konfigurace ASP.NET se skládá ze sady objektů správy ASP.NET, které můžete použít ke konfiguraci webů a aplikací prostřednictvím kódu programu. Objekty správy jsou implementovány jako knihovna tříd rozhraní .NET Framework. Programovací model rozhraní API pro konfiguraci pomáhá zajistit konzistenci a spolehlivost kódu tím, že vynucuje datové typy v době kompilace. Aby bylo možné usnadnit správu konfigurací aplikací, rozhraní API pro konfiguraci umožňuje zobrazit data, která jsou sloučena ze všech bodů v hierarchii konfigurace jako jedna kolekce, namísto zobrazení dat jako samostatných kolekcí z různých konfiguračních souborů. Rozhraní API pro konfiguraci navíc umožňuje manipulovat s konfiguracemi celé aplikace bez přímé úpravy XML v konfiguračních souborech. Rozhraní API také zjednodušuje úlohy konfigurace tím, že podporuje nástroje pro správu, jako je nástroj pro správu webu. Rozhraní API pro konfiguraci zjednodušuje nasazení tím, že podporuje vytváření konfiguračních souborů v počítači a spouštění konfiguračních skriptů na více počítačích.
Poznámka
Rozhraní API konfigurace nepodporuje vytváření aplikací služby IIS.
Práce s nastavením místní a vzdálené konfigurace
Objekt Konfigurace představuje sloučené zobrazení nastavení konfigurace, které se vztahují na konkrétní fyzickou entitu, jako je počítač, nebo na logickou entitu, jako je aplikace nebo web. Zadaná logická entita může existovat v místním počítači nebo na vzdáleném serveru. Pokud pro zadanou entitu neexistuje žádný konfigurační soubor, objekt Configuration představuje výchozí nastavení konfigurace definované souborem Machine.config.
Objekt Konfigurace můžete získat pomocí jedné z otevřených metod konfigurace z následujících tříd:
- Třída ConfigurationManager, pokud je vaší entitou klientská aplikace.
- Třída WebConfigurationManager, pokud je vaší entitou webová aplikace.
Tyto metody vrátí objekt Konfigurace, který následně poskytuje požadované metody a vlastnosti pro zpracování podkladových konfiguračních souborů. K těmto souborům můžete přistupovat pro čtení nebo zápis.
Čtení
Ke čtení informací o konfiguraci použijete metodu GetSection Nebo GetSectionGroup. Uživatel nebo proces, který čte, musí mít oprávnění ke čtení u všech konfiguračních souborů v hierarchii.
Poznámka
Pokud použijete statickou metodu GetSection, která přebírá parametr path, musí parametr path odkazovat na aplikaci, ve které je kód spuštěn. V opačném případě se parametr ignoruje a vrátí se informace o konfiguraci pro aktuálně spuštěnou aplikaci.
Zápis
K zápisu informací o konfiguraci použijete některou z metod Uložit. Uživatel nebo proces, který zapisuje, musí mít oprávnění k zápisu do konfiguračního souboru a adresáře na aktuální úrovni hierarchie konfigurace a také oprávnění ke čtení všech konfiguračních souborů v hierarchii.
Pokud chcete vygenerovat konfigurační soubor, který představuje zděděná nastavení konfigurace pro zadanou entitu, použijte jednu z následujících metod save-configuration:
- Metoda Save pro vytvoření nového konfiguračního souboru.
- Metoda SaveAs pro vygenerování nového konfiguračního souboru v jiném umístění.
Třídy konfigurace a obory názvů
Mnoho tříd konfigurace a metod je navzájem podobných. Následující tabulka popisuje nejčastěji používané třídy konfigurace a obory názvů.
Třída konfigurace nebo obor názvů | Popis |
---|---|
Obor názvů System.Configuration | Obsahuje hlavní třídy konfigurace pro všechny aplikace rozhraní .NET Framework. Třídy obslužné rutiny oddílu se používají k získání konfiguračních dat pro oddíl z metod, jako jsou GetSection a GetSectionGroup. Tyto dvě metody nejsou statické. |
System.Configuration.Configuration – třída | Představuje sadu konfiguračních dat pro počítač, aplikaci, webový adresář nebo jiný prostředek. Tato třída obsahuje užitečné metody, jako jsou GetSection a GetSectionGroup, pro aktualizaci nastavení konfigurace a získání odkazů na oddíly a skupiny oddílů. Tato třída se používá jako návratový typ pro metody, které získávají konfigurační data v době návrhu, jako jsou metody Tříd WebConfigurationManager a ConfigurationManager. |
System.Web.Configuration – obor názvů | Obsahuje třídy obslužné rutiny oddílu pro oddíly konfigurace ASP.NET definované v nastavení konfigurace ASP.NET. Třídy obslužné rutiny oddílu se používají k získání konfiguračních dat pro oddíl z metod, jako jsou GetSection a GetSectionGroup. |
System.Web.Configuration.WebConfigurationManager – třída | Poskytuje užitečné metody pro získání odkazů na nastavení konfigurace za běhu a návrhu. Tyto metody používají třídu System.Configuration.Configuration jako návratový typ. Můžete použít statickou metodu GetSection této třídy nebo metodu nestatického GetSection třídy System.Configuration.ConfigurationManager zaměnitelně. Pro konfigurace webových aplikací se místo třídy System.Configuration.Configuration.Configuration.ConfigurationManager doporučuje třída System.Configuration.ConfigurationManager. |
Obor názvů System.Configuration.Provider | Poskytuje způsob, jak přizpůsobit a rozšířit poskytovatele konfigurace. Toto je základní třída pro všechny třídy zprostředkovatelů v konfiguračním systému. |
Obor názvů System.Web.Management | Obsahuje třídy a rozhraní pro správu a monitorování stavu webových aplikací. Přesně řečeno, tento obor názvů se nepovažuje za součást rozhraní API konfigurace. Například trasování a aktivaci událostí provádí třídy v tomto oboru názvů. |
Obor názvů System.Management.Instrumentation | Poskytuje třídy nezbytné pro instrumentaci aplikací, aby potenciálním uživatelům zpřístupnil informace a události správy prostřednictvím rozhraní WMI (Windows Management Instrumentation). ASP.NET monitorování stavu používá k doručování událostí rozhraní WMI. Přesně řečeno, tento obor názvů se nepovažuje za součást rozhraní API konfigurace. |
Čtení z konfiguračních souborů ASP.NET
Třída WebConfigurationManager je základní třída pro čtení z ASP.NET konfiguračních souborů. Čtení konfiguračních souborů ASP.NET v podstatě probíhá ve třech krocích:
- Získejte objekt Konfigurace pomocí metody OpenWebConfiguration.
- Získejte odkaz na požadovanou část v konfiguračním souboru.
- Přečtěte si požadované informace z konfiguračního souboru.
Objekt Configuration představuje nepředstavuje konkrétní konfigurační soubor. Místo toho představuje sloučené zobrazení konfigurace počítače, aplikace nebo webu. Následující ukázka kódu vytvoří instanci objektu Configuration představující konfiguraci webové aplikace s názvem ProductInfo.
Configuration config = WebConfigurationManager.OpenWebConfiguration("/ProductInfo);
Poznámka
Všimněte si, že pokud cesta /ProductInfo neexistuje, výše uvedený kód vrátí výchozí konfiguraci uvedenou v souboru machine.config.
Jakmile budete mít objekt Configuration, můžete pomocí metody GetSection nebo GetSectionGroup přejít k podrobnostem nastavení konfigurace. Následující příklad získá odkaz na nastavení zosobnění pro výše uvedenou aplikaci ProductInfo:
Configuration config =
WebConfigurationManager.OpenWebConfiguration("/ProductInfo);
IdentitySection section =
(IdentitySection)config.GetSection("system.web/identity");
Zápis do konfiguračních souborů ASP.NET
Stejně jako při čtení z konfiguračních souborů je třída WebConfigurationManager jádrem pro zápis do Asp.NET konfiguračních souborů. Zápis do konfiguračních souborů ASP.NET obsahuje také tři kroky.
- Získejte objekt Konfigurace pomocí metody OpenWebConfiguration.
- Získejte odkaz na požadovaný oddíl v konfiguračním souboru.
- Zapište požadované informace z konfiguračního souboru pomocí metody Save nebo SaveAs.
Následující kód změní atribut debug elementu <compilation> na false:
System.Configuration.Configuration updateWebConfig =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/webApp");
System.Web.Configuration.CompilationSection compilation =
updateWebConfig.GetSection("system.web/compilation")
as System.Web.Configuration.CompilationSection;
compilation.Debug = false;
if (!compilation.SectionInformation.IsLocked) {
updateWebConfig.Save();
Response.Write("Save Success!");
} else {
Response.Write("Save Failed!");
}
Při spuštění tohoto kódu bude atribut debug elementu <compilation> nastaven na hodnotu false pro soubor web.config aplikace webApp .
Obor názvů System.Web.Management
Obor názvů System.Web.Management poskytuje třídy a rozhraní pro správu a monitorování stavu ASP.NET aplikací.
Protokolování se provádí definováním pravidla, které přidružuje události ke zprostředkovateli. Pravidlo definuje typ událostí, které se odesílají zprostředkovateli. K protokolování jsou k dispozici následující základní události:
Webbaseevent | Základní třída události pro všechny události. Obsahuje požadované vlastnosti pro všechny události, jako je kód události, kód podrobností události, datum a čas vyvolání události, pořadové číslo, zpráva o události a podrobnosti události. |
---|---|
WebManagementEvent | Základní třída událostí pro události správy, jako je doba života aplikace, požadavek, chyba a události auditu. |
WebHeartbeatEvent | Událost vygenerovaná aplikací v pravidelných intervalech za účelem zachycení užitečných informací o stavu modulu runtime. |
WebAuditEvent | Základní třída pro události auditu zabezpečení, které se používají k označení podmínek, jako je selhání autorizace, selhání dešifrování atd. |
WebRequestEvent | Základní třída pro všechny události informačních požadavků. |
WebBaseErrorEvent | Základní třída pro všechny události označující chybové podmínky. |
Dostupné typy poskytovatelů umožňují odesílat výstupy událostí do Prohlížeč událostí, SQL Server, rozhraní WMI (Windows Management Instrumentation) a e-mailu. Předem nakonfigurovaní zprostředkovatelé a mapování událostí snižují množství práce potřebné k protokolování výstupu události.
ASP.NET 2.0 používá zprostředkovatele protokolu událostí k protokolování událostí na základě spouštění a zastavování domén aplikace a k protokolování všech neošetřených výjimek. To vám pomůže pokrýt některé základní scénáře. Řekněme například, že vaše aplikace vyvolá výjimku, ale uživatel chybu neuloží a vy ji nemůžete reprodukovat. S výchozím pravidlem protokolu událostí byste mohli shromáždit informace o výjimce a zásobníku, abyste získali lepší představu o tom, k jakému typu chyby došlo. Další příklad platí v případě, že aplikace ztrácí stav relace. V takovém případě můžete v protokolu událostí zjistit, jestli se doména aplikace recykluje a proč se doména aplikace zastavila.
Systém monitorování stavu je také rozšiřitelný. Můžete například definovat vlastní webové události, aktivovat je v rámci vaší aplikace a pak definovat pravidlo pro odesílání informací o událostech poskytovateli, jako je váš e-mail. To vám umožní snadno spojit instrumentaci s poskytovateli monitorování stavu. Jako další příklad můžete aktivovat událost při každém zpracování objednávky a nastavit pravidlo, které každou událost odešle do databáze SQL Server. Můžete také aktivovat událost, když se uživateli nepodaří přihlásit několikrát za sebou, a nastavit událost tak, aby používala poskytovatele e-mailu.
Konfigurace výchozích zprostředkovatelů a událostí je uložena v souboru globálních Web.config. Globální Web.config soubor ukládá všechna webová nastavení, která byla uložena v souboru Machine.config v ASP.NET 1x. Soubor globální Web.config se nachází v následujícím adresáři:
%windir%\Microsoft.Net\Framework\v2.0.*\config\Web.config
Část <healthMonitoring> globálního souboru Web.config poskytuje výchozí nastavení konfigurace. Tato nastavení můžete přepsat nebo můžete nakonfigurovat vlastní nastavení implementací oddílu <healthMonitoring> v souboru Web.config pro vaši aplikaci.
Část <healthMonitoring> globálního souboru Web.config obsahuje následující položky:
Poskytovatelů | Obsahuje poskytovatele nastavené pro Prohlížeč událostí, rozhraní WMI a SQL Server. |
---|---|
Eventmappings | Obsahuje mapování pro různé třídy WebBase. Tento seznam můžete rozšířit, pokud vygenerujete vlastní třídu událostí. Generováním vlastní třídy událostí získáte jemnější úroveň podrobností o poskytovateli, kteří informace odesílají. Můžete například nakonfigurovat neošetřené výjimky tak, aby se odesílaly do SQL Server a zároveň do e-mailu odesílaly vlastní události. |
Pravidla | Prováže eventMappings se zprostředkovatelem. |
Vyrovnávací paměti | Používá se s poskytovateli SQL Server a e-mailu k určení, jak často se mají události vyprázdnit do poskytovatele. |
Níže je příklad kódu z globálního souboru Web.config.
<healthMonitoring>
<!-- Event Log Provider being added. -->
<providers>
<add name="EventLogProvider"
type="System.Web.Management.EventLogWebEventProvider,
System.Web,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
<!-- Event mapping provides a friendly name to the
events based on the WebBaseErrorEvent class. -->
<eventMappings>
<add name="All Errors"
type="System.Web.Management.WebBaseErrorEvent,
System.Web,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0" endEventCode="2147483647" />
</eventMappings>
<!-- Rule tying the "All Errors" event mapping to the EventLog Provider. -->
<rules>
<add name="All Errors Default" eventName="All Errors"
provider="EventLogProvider"
profile="Default" minInstances="1"
maxLimit="Infinite" minInterval="00:01:00" custom="" />
</rules>
</healthMonitoring>
Ukládání událostí pro Prohlížeč událostí
Jak už bylo zmíněno dříve, zprostředkovatel protokolování událostí v Prohlížeč událostí je nakonfigurovaný v globálním souboru Web.config. Ve výchozím nastavení se protokolují všechny události založené na WebBaseErrorEvent a WebFailureAuditEvent . Můžete přidat další pravidla pro protokolování dalších informací do protokolu událostí. Pokud například chcete protokolovat všechny události (tj. všechny události založené na WebBaseEvent), můžete do souboru Web.config přidat následující pravidlo:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events"
provider="EventLogProvider" profile="Critical" />
</rules>
</healthMonitoring>
Toto pravidlo by propojilo mapu událostí Všechny události se zprostředkovatelem protokolu událostí. V globálním souboru Web.config jsou zahrnuty události eventMapping i poskytovatel.
Jak ukládat události k SQL Server
Tato metoda používá databázi ASPNETDB , která je generována nástrojem Aspnet_regsql.exe. Výchozí zprostředkovatel používá připojovací řetězec LocalSqlServer, který používá buď souborovou databázi ve složce App_data, nebo místní instanci SQLExpress SQL Server. Připojovací řetězec LocalSqlServer i SqlProvider jsou nakonfigurované v souboru globálního Web.config.
Připojovací řetězec LocalSqlServer v souboru globálního Web.config vypadá takto:
<connectionStrings>
<add name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
Pokud chcete použít jinou instanci SQL Server, budete muset použít nástroj Aspnet_regsql.exe, který najdete ve složce %windir%\Microsoft.Net\Framework\v2.0.*. Pomocí nástroje Aspnet_regsql.exe vygenerujte vlastní databázi ASPNETDB v instanci SQL Server, přidejte připojovací řetězec do konfiguračního souboru aplikací a pak přidejte zprostředkovatele pomocí nového připojovacího řetězce. Jakmile vytvoříte databázi ASPNETDB , budete muset nastavit pravidlo pro propojení eventMapping s sqlProvider.
Bez ohledu na to, jestli použijete výchozího poskytovatele SqlProvider nebo nakonfigurujete vlastního zprostředkovatele, budete muset přidat pravidlo propojující zprostředkovatele s mapou událostí. Následující pravidlo prováže nového zprostředkovatele, kterého jste vytvořili výše, s mapou událostí Všechny události . Toto pravidlo zaprotokoluje všechny události založené na WebBaseEvent a odešle je do mySqlWebEventProvider, který bude používat připojovací řetězec MYASPNETDB. Následující kód přidá pravidlo pro propojení zprostředkovatele s mapou událostí:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events"
provider="MySqlWebEventProvider" profile="Critical"/>
</rules>
</healthMonitoring>
Pokud byste chtěli posílat chyby jenom SQL Server, můžete přidat následující pravidlo:
<add name="All Errors"
eventName="All Errors"
provider="MySqlWebEventProvider"
profile="Critical"/>
Předávání událostí do rozhraní WMI
Události můžete také předat službě WMI. Poskytovatel rozhraní WMI je ve výchozím nastavení nakonfigurovaný v souboru globálního Web.config.
Následující příklad kódu přidá pravidlo pro předávání událostí do rozhraní WMI:
<providers>
<add name="WmiWebEventProvider"
type="System.Web.Management.WmiWebEventProvider,System.Web,
Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
Budete muset přidat pravidlo pro přidružení eventMappingu ke zprostředkovateli a také aplikaci naslouchacího procesu WMI pro naslouchání událostem. Následující příklad kódu přidá pravidlo pro propojení zprostředkovatele WMI s mapou událostí Všechny události :
<rules>
<add name="All Events"
eventName="All Events" provider="WmiWebEventProvider"
profile="Critical" />
</rules>
Jak přeposílat události do e-mailu
Události můžete také přeposílat do e-mailu. Dávejte pozor na to, která pravidla událostí mapujete na svého poskytovatele e-mailu, protože si můžete neúmyslně poslat spoustu informací, které by mohly být vhodnější pro SQL Server nebo protokol událostí. Existují dva poskytovatelé e-mailu; SimpleMailWebEventProvider a TemplatedMailWebEventProvider. Každý má stejné atributy konfigurace, s výjimkou "template" a "detailedTemplateErrors" atributy, které jsou k dispozici pouze na TemplatedMailWebEventProvider.
Poznámka
Žádný z těchto poskytovatelů e-mailu není nakonfigurovaný. Budete je muset přidat do souboru Web.config.
Hlavní rozdíl mezi těmito dvěma poskytovateli e-mailu je, že SimpleMailWebEventProvider odesílá e-maily v obecné šabloně, kterou nelze změnit. Ukázkový soubor Web.config přidá tohoto poskytovatele e-mailu do seznamu nakonfigurovaných zprostředkovatelů pomocí následujícího pravidla:
<add name="mySimple-mailWebEventProvider"
type="System.Web.Management.Simple-mailWebEventProvider"
to="e-mail@foo.com" from="e-mail@foo.com"
maxMessagesPerNotification="1" maxEventsPerMessage="10"
buffer="true" bufferMode="Critical Notification"
subjectPrefix="Web Events"/>
Přidá se také následující pravidlo, které sváže poskytovatele e-mailu s mapou událostí Všechny události :
<add name="All Events" eventName="All Events"
provider="mySimple-mailWebEventProvider" profile="Critical"/>
Trasování ASP.NET 2.0
V ASP.NET 2.0 existují tři hlavní vylepšení trasování.
- Integrovaná funkce trasování
- Programový přístup k trasování zpráv
- Vylepšené trasování na úrovni aplikace
Integrovaná funkce trasování
Nyní můžete směrovat zprávy generované třídou System.Diagnostics.Trace do ASP.NET výstupu trasování a směrovat zprávy generované trasováním ASP.NET do System.Diagnostics.Trace. Události instrumentace ASP.NET můžete také předávat do System.Diagnostics.Trace. Tuto funkci poskytuje nový atribut writeToDiagnosticsTrace elementu <trace> . Pokud je tato logická hodnota true, ASP.NET Trasovací zprávy jsou předány do infrastruktury trasování System.Diagnostics pro použití všemi naslouchacími procesy, které jsou registrovány k zobrazení zpráv trasování.
Programový přístup ke zprávě trasování
ASP.NET 2.0 umožňuje programový přístup ke všem zprávám trasování prostřednictvím třídy TraceContextRecord a kolekce TraceRecords . Nejúčinnějším způsobem přístupu ke zprávě trasování je zaregistrovat delegáta TraceContextEventHandler (také nového v ASP.NET 2.0) pro zpracování nové události TraceFinished . Pak můžete podle potřeby procházet trasovací zprávy.
Následující ukázka kódu to ilustruje:
void Page_Load(object sender, EventArgs e) {
// Register a handler for the TraceFinished event.
Trace.TraceFinished += new
TraceContextEventHandler(this.OnTraceFinished);
// Write a trace message.
Trace.Write("Web Forms Infrastructure Methods",
"USERMESSAGE: Page_Load complete.");
}
// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e) {
TraceContextRecord r = null;
// Iterate through the collection of trace records and write
// them to the response stream.
foreach (object o in e.TraceRecords) {
r = (TraceContextRecord)o;
Response.Write(String.Format("trace message: {0} <BR>",
r.Message));
}
}
Ve výše uvedeném příkladu procházím kolekci TraceRecords a pak zapisuji každou zprávu do streamu odpovědi.
Vylepšené trasování Application-Level
Trasování na úrovni aplikace je vylepšeno zavedením nového atributu mostRecent elementu <trace> . Tento atribut určuje, zda je zobrazen nejnovější výstup trasování na úrovni aplikace a starší data trasování nad limity, které jsou uvedeny requestLimit jsou zahozeny. Pokud je false, zobrazí se pro požadavky data trasování, dokud se nedosáhne atributu requestLimit.
ASP.NET nástroje příkazového řádku
Při konfiguraci ASP.NET je k dispozici několik nástrojů příkazového řádku. ASP.NET vývojáři by měli nástroj aspnet_regiis.exe znát. ASP.NET 2.0 poskytuje tři další nástroje příkazového řádku, které pomáhají při konfiguraci.
K dispozici jsou následující nástroje příkazového řádku:
Nástroj | Použití |
---|---|
aspnet_regiis.exe | Umožňuje registraci ASP.NET se službou IIS. Existují dvě verze těchto nástrojů, které se dodávají s ASP.NET 2.0, jednu pro 32bitové systémy (ve složce Framework) a druhou pro 64bitové systémy (ve složce Framework64). 64bitová verze nebude nainstalována v 32bitovém operačním systému. |
aspnet_regsql.exe | Nástroj ASP.NET SQL Server Registration slouží k vytvoření databáze Microsoft SQL Server pro použití zprostředkovateli SQL Server v ASP.NET nebo k přidání nebo odebrání možností z existující databáze. Soubor Aspnet_regsql.exe se nachází ve složce [jednotka:]\WINDOWS\Microsoft.NET\Framework\versionNumber na webovém serveru. |
aspnet_regbrowsers.exe | Nástroj ASP.NET Browser Registration analyzuje a zkompiluje všechny systémové definice prohlížeče do sestavení a nainstaluje sestavení do globální mezipaměti sestavení (GACH). Nástroj používá definiční soubory prohlížeče (. BROWSER soubory) z podadresáře Prohlížeče rozhraní .NET Framework. Nástroj najdete v adresáři %SystemRoot%\Microsoft.NET\Framework\version\. |
aspnet_compiler.exe | Nástroj ASP.NET Kompilace umožňuje zkompilovat ASP.NET webovou aplikaci, a to buď na místě, nebo pro nasazení do cílového umístění, jako je produkční server. Místní kompilace pomáhá výkonu aplikace, protože koncoví uživatelé nenarazí na zpoždění prvního požadavku na aplikaci při kompilaci aplikace. |
Vzhledem k tomu, že nástroj aspnet_regiis.exe není v ASP.NET 2.0 novinkou, nebudeme ho zde probírat.
nástroj pro registraci ASP.NET SQL Server – aspnet_regsql.exe
Pomocí nástroje ASP.NET SQL Server Registrace můžete nastavit několik typů možností. Můžete zadat připojení SQL, určit, které ASP.NET aplikační služby používají SQL Server ke správě informací, určit, která databáze nebo tabulka se používá pro závislost mezipaměti SQL, a přidat nebo odebrat podporu použití SQL Server k ukládání procedur a stavu relace.
Několik ASP.NET aplikačních služeb se při správě ukládání a načítání dat ze zdroje dat spoléhá na poskytovatele. Každý poskytovatel je specifický pro daný zdroj dat. ASP.NET zahrnuje poskytovatele SQL Server pro následující funkce ASP.NET:
- Členství (třída SqlMembershipProvider ).
- Správa rolí (třída SqlRoleProvider ).
- Profile (třída SqlProfileProvider ).
- Přizpůsobení webových částí (třída SqlPersonalizationProvider ).
- Webové události (třída SqlWebEventProvider ).
Při instalaci ASP.NET obsahuje soubor Machine.config pro váš server prvky konfigurace, které určují zprostředkovatele SQL Server pro každou ASP.NET funkce, které jsou závislé na poskytovateli. Tito poskytovatelé jsou ve výchozím nastavení nakonfigurovaní pro připojení k instanci místního uživatele SQL Server Express 2005. Pokud změníte výchozí připojovací řetězec používaný poskytovateli, musíte před použitím některé z ASP.NET funkcí nakonfigurovaných v konfiguraci počítače nainstalovat databázi SQL Server a databázové prvky pro zvolenou funkci pomocí Aspnet_regsql.exe. Pokud databáze, kterou zadáte pomocí nástroje pro registraci SQL, ještě neexistuje (aspnetdb bude výchozí databází, pokud není zadána na příkazovém řádku), musí mít aktuální uživatel oprávnění k vytváření databází v SQL Server a také k vytváření prvků schématu v databázi.
Závislost mezipaměti SQL
Pokročilou funkcí ukládání výstupu do mezipaměti ASP.NET je závislost mezipaměti SQL. Závislost mezipaměti SQL podporuje dva různé režimy operací: jeden, který používá ASP.NET implementaci dotazování na tabulky, a druhý režim, který používá funkce oznámení dotazů SQL Server 2005. Nástroj pro registraci SQL lze použít ke konfiguraci režimu operace dotazování na tabulky.
Stav relace
Ve výchozím nastavení jsou hodnoty stavu relace a informace uloženy v paměti v rámci procesu ASP.NET. Případně můžete ukládat data relací do SQL Server databáze, kde je může sdílet více webových serverů. Pokud databáze, kterou zadáte pro stav relace pomocí nástroje pro registraci SQL, ještě neexistuje, musí mít aktuální uživatel oprávnění k vytváření databází v SQL Server a také k vytváření prvků schématu v databázi. Pokud databáze existuje, musí mít aktuální uživatel oprávnění k vytváření prvků schématu v existující databázi.
Pokud chcete na SQL Server nainstalovat databázi stavu relace, spusťte nástroj Aspnet_regsql.exe a pomocí příkazu zadejte následující informace:
- Název instance SQL Server pomocí možnosti -S.
- Přihlašovací údaje pro účet, který má oprávnění k vytvoření databáze v počítači se systémem SQL Server. Použijte možnost -E , pokud chcete použít aktuálně přihlášeného uživatele, nebo pomocí možnosti -U zadejte ID uživatele spolu s možností -P a zadejte heslo.
- Možnost příkazového řádku -ssadd pro přidání databáze stavu relace
Ve výchozím nastavení nelze nástroj Aspnet_regsql.exe nainstalovat databázi stavu relace do počítače se systémem SQL Server 2005 Express Edition.
Nástroj pro registraci prohlížeče ASP.NET – aspnet_regbrowsers.exe
V ASP.NET verzi 1.1 obsahoval soubor Machine.config oddíl s názvem <browserCaps>. Tato část obsahovala řadu položek XML, které definovaly konfigurace pro různé prohlížeče na základě regulárního výrazu. Pro ASP.NET verze 2.0 nový . Soubor BROWSER definuje parametry konkrétního prohlížeče pomocí položek XML. Informace v novém prohlížeči přidáte přidáním nového . BROWSER do složky umístěné ve složce %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers ve vašem systému.
Vzhledem k tomu, že aplikace nečítá soubor .config pokaždé, když vyžaduje informace o prohlížeči, můžete vytvořit nový soubor . SOUBOR BROWSER a spuštěním Aspnet_regbrowsers.exe přidejte požadované změny do sestavení. Díky tomu bude mít server okamžitý přístup k novým informacím v prohlížeči, abyste nemuseli vypínat žádné aplikace, abyste tyto informace získali. Aplikace má přístup k funkcím prohlížeče prostřednictvím vlastnosti Browser aktuálního požadavku HttpRequest.
Při spuštění aspnet_regbrowser.exe jsou k dispozici následující možnosti:
Možnost | Popis |
---|---|
-? | Zobrazí text nápovědy Aspnet_regbbrowsers.exe v příkazovém okně. |
-i | Vytvoří sestavení funkcí prohlížeče modulu runtime a nainstaluje ho do globální mezipaměti sestavení (GPA). |
-U | Odinstaluje sestavení funkcí prohlížeče modulu runtime z globální mezipaměti sestavení (GPA). |
Nástroj pro kompilaci ASP.NET – aspnet_compiler.exe
Nástroj ASP.NET Kompilace lze použít dvěma obecnými způsoby: pro místní kompilaci a kompilaci pro nasazení, kde je zadán cílový výstupní adresář.
Kompilace aplikace na místě
Nástroj ASP.NET Kompilace může zkompilovat aplikaci na místě, to znamená, že napodobuje chování provádění více požadavků na aplikaci, což způsobuje pravidelnou kompilaci. Uživatelé předem zkompilovaného webu nezaznají zpoždění způsobené kompilací stránky při prvním požadavku.
Při předkompilování lokality na místě platí následující položky:
- Web si zachovává své soubory a adresářovou strukturu.
- Musíte mít kompilátory pro všechny programovací jazyky používané lokalitou na serveru.
- Pokud kompilace některého souboru selže, kompilace selže u celého webu.
Po přidání nových zdrojových souborů do ní můžete aplikaci také znovu zkompilovat. Nástroj zkompiluje pouze nové nebo změněné soubory, pokud nezadáte možnost -c .
Poznámka
Kompilace aplikace, která obsahuje vnořenou aplikaci, nekompiluje vnořenou aplikaci. Vnořená aplikace musí být zkompilována samostatně.
Kompilace aplikace pro nasazení
Kompilujete aplikaci pro nasazení (kompilaci do cílového umístění) zadáním parametru targetDir. TargetDir může být konečným umístěním webové aplikace nebo kompilovanou aplikaci lze dále nasadit. Použití možnosti -u zkompiluje aplikaci takovým způsobem, že můžete provádět změny v určitých souborech v kompilované aplikaci, aniž byste je znovu zkompilovali. Aspnet_compiler.exe rozlišuje statické a dynamické typy souborů a při vytváření výsledné aplikace je zpracovává odlišně.
- Statické typy souborů jsou ty, které nemají přidružený kompilátor nebo zprostředkovatele sestavení, například soubory s příponou .css, .gif, .htm, .html, .jpg, .js atd. Tyto soubory se jednoduše zkopírují do cílového umístění a jejich relativní místa v adresářové struktuře se zachovají.
- Dynamické typy souborů jsou ty, které mají přidružený kompilátor nebo zprostředkovatele sestavení, včetně souborů s příponou názvů souborů specifických pro ASP.NET, jako jsou .asax, .ascx, .ashx, .aspx, .browser, .master atd. Nástroj ASP.NET Kompilace generuje sestavení z těchto souborů. Pokud je možnost -u vynechána, nástroj také vytvoří soubory s příponou názvu souboru . KOMPILOVÁNO, které mapuje původní zdrojové soubory na jejich sestavení. Aby se zajistila zachování adresářové struktury zdroje aplikace, nástroj vygeneruje zástupné soubory v odpovídajících umístěních v cílové aplikaci.
Je nutné použít možnost -u k označení, že obsah zkompilované aplikace může být změněn. V opačném případě se následné úpravy ignorují nebo způsobují chyby za běhu.
Následující tabulka popisuje, jak nástroj pro kompilaci ASP.NET zpracovává různé typy souborů, pokud je zahrnuta možnost -u .
Typ souboru | Akce kompilátoru |
---|---|
.ascx, .aspx, .master | Tyto soubory jsou rozděleny na kódy a zdrojový kód, který zahrnuje soubory kódu na pozadí a veškerý kód, který je uzavřen v <elementech script runat="server"> . Zdrojový kód je zkompilován do sestavení s názvy odvozenými z algoritmu hash a sestavení jsou umístěna v adresáři Bin. Jakýkoli vložený kód, tj. kód uzavřený mezi <% a %> závorkami, je součástí kódu a není kompilován. Vytvoří se nové soubory se stejným názvem jako zdrojové soubory, které obsahují značky a umístí se do odpovídajících výstupních adresářů. |
.ashx, .asmx | Tyto soubory nejsou kompilovány a jsou přesunuty do výstupních adresářů tak, jak jsou a nejsou zkompilovány. Pokud chcete kód obslužné rutiny zkompilovat, umístěte ho do souborů zdrojového kódu v adresáři App_Code. |
.cs, .vb, .jsl, .cpp (nezahrnuje soubory kódu na pozadí pro typy souborů uvedené výše) | Tyto soubory jsou kompilovány a zahrnuty jako prostředek v sestaveních, která na ně odkazují. Zdrojové soubory se do výstupního adresáře nezkopírují. Pokud se na soubor kódu neodkazuje, není zkompilován. |
Vlastní typy souborů | Tyto soubory nejsou kompilovány. Tyto soubory se zkopírují do odpovídajících výstupních adresářů. |
Soubory zdrojového kódu v podadresáři App_Code | Tyto soubory jsou kompilovány do sestavení a umístěny do adresáře Bin. |
Soubory .resx a .resource v podadresáři App_GlobalResources | Tyto soubory jsou kompilovány do sestavení a umístěny do adresáře Bin. Pod hlavním výstupním adresářem se nevytvoří podadresář App_GlobalResources a do výstupních adresářů se nekopírují žádné soubory .resx nebo .resources umístěné ve zdrojovém adresáři. |
Soubory .resx a .resource v podadresáři App_LocalResources | Tyto soubory se nezkompilují a zkopírují se do odpovídajících výstupních adresářů. |
Soubory .skin v podadresáři App_Themes | Soubory .skin a statické soubory motivu se nezkompilují a zkopírují se do odpovídajících výstupních adresářů. |
.browser Web.config Typy statických souborů Sestavení, která jsou již přítomna v adresáři Bin | Tyto soubory se zkopírují do výstupních adresářů tak, jak jsou. |
Následující tabulka popisuje, jak nástroj pro kompilaci ASP.NET zpracovává různé typy souborů, pokud je vynechána možnost -u .
Typ souboru | Akce kompilátoru |
---|---|
.aspx, .asmx, .ashx, .master | Tyto soubory jsou rozděleny na kódy a zdrojový kód, který zahrnuje soubory kódu na pozadí a veškerý kód, který je uzavřen v <elementech script runat="server"> . Zdrojový kód je kompilován do sestavení s názvy, které jsou odvozeny z algoritmu hash. Výsledná sestavení jsou umístěna v adresáři Bin. Jakýkoli vložený kód, tj. kód uzavřený mezi <% a %> závorkami, je součástí kódu a není kompilován. Kompilátor vytvoří nové soubory, které budou obsahovat značky se stejným názvem jako zdrojové soubory. Tyto výsledné soubory jsou umístěny v adresáři Bin. Kompilátor také vytvoří soubory se stejným názvem jako zdrojové soubory, ale s příponou . KOMPILOVÁNO, které obsahují informace o mapování. Tá. KOMPILOVANÉ soubory jsou umístěny ve výstupních adresářích odpovídajících původnímu umístění zdrojových souborů. |
.ascx | Tyto soubory jsou rozdělené na kódy značek a zdrojový kód. Zdrojový kód se zkompiluje do sestavení a umístí se do adresáře Bin s názvy odvozenými z hashovacího algoritmu. Negenerují se žádné soubory značek. |
.cs, .vb, .jsl, .cpp (nezahrnuje soubory kódu na pozadí pro typy souborů uvedené výše) | Zdrojový kód, na který odkazují sestavení generovaná ze souborů .ascx, .ashx nebo .aspx, je zkompilován do sestavení a umístěn do adresáře Bin. Nekopírují se žádné zdrojové soubory. |
Vlastní typy souborů | Tyto soubory se kompilují jako dynamické soubory. V závislosti na typu souboru, na který je založen, může kompilátor umístit soubory mapování do výstupních adresářů. |
Soubory v podadresáři App_Code | Soubory zdrojového kódu v tomto podadresáři jsou zkompilovány do sestavení a umístěny do adresáře Bin. |
Soubory v podadresáři App_GlobalResources | Tyto soubory jsou kompilovány do sestavení a umístěny do adresáře Bin. V hlavním výstupním adresáři se nevytvoří podadresář App_GlobalResources. Pokud konfigurační soubor určuje appliesTo="All", zkopírují se soubory .resx a .resources do výstupních adresářů. Nejsou zkopírovány, pokud jsou odkazovány BuildProvider. |
Soubory .resx a .resource v podadresáři App_LocalResources | Tyto soubory jsou kompilovány do sestavení s jedinečnými názvy a umístěny v adresáři Bin. Do výstupních adresářů se nekopírují žádné soubory .resx ani .resource. |
Soubory .skin v podadresáři App_Themes | Motivy se kompilují do sestavení a umístí se do adresáře Bin. Soubory se zástupným inzerováním se vytvoří pro soubory .skin a umístí se do odpovídajícího výstupního adresáře. Statické soubory (například .css) se zkopírují do výstupních adresářů. |
.browser Web.config Typy statických souborů Sestavení, která jsou již přítomna v adresáři Bin | Tyto soubory se zkopírují tak, jak jsou, do výstupního adresáře. |
Pevné názvy sestavení
Některé scénáře, například nasazení webové aplikace pomocí Instalační služby systému Windows MSI, vyžadují použití konzistentních názvů a obsahu souborů a také konzistentní adresářové struktury k identifikaci sestavení nebo nastavení konfigurace pro aktualizace. V těchto případech můžete použít možnost -fixednames k určení, že nástroj ASP.NET Kompilace má kompilovat sestavení pro každý zdrojový soubor místo použití místa, kde více stránek jsou kompilovány do sestavení. To může vést k velkému počtu sestavení, takže pokud máte obavy o škálovatelnost, měli byste tuto možnost používat opatrně.
Kompilace silného názvu
K dispozici jsou možnosti -aptca, -delaysign, -keycontainer a -keyfile , takže můžete použít Aspnet_compiler.exe k vytváření sestavení se silnými názvy bez použití nástroje strong name (Sn.exe) samostatně. Tyto možnosti odpovídají allowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute a AssemblyKeyFileAttribute.
Diskuze o těchto atributech je mimo rozsah tohoto kurzu.
Testovací prostředí
Každé z následujících testovacích prostředí vychází z předchozích testovacích prostředí. Budete je muset provést v pořadí.
Cvičení 1: Použití rozhraní API pro konfiguraci
- Vytvořte nový web s názvem mod9lab.
- Přidejte na web nový konfigurační soubor webu.
- Do souboru web.config přidejte následující:
<authorization>
<deny users="?"/>
</authorization>
<identity impersonate="true"/>
Tím zajistíte, že budete mít oprávnění k uložení změn v souboru web.config.
- Do souboru Default.aspx přidejte nový ovládací prvek Popisek a změňte ID na lblDebugStatus.
- Přidejte nový ovládací prvek Tlačítko do souboru Default.aspx.
- Změňte ID ovládacího prvku Tlačítko na btnToggleDebug a Text na Přepnout stav ladění.
- Otevřete zobrazení kódu pro soubor kódu default.aspx a přidejte příkaz using pro System.Web.Configuration následujícím způsobem:
using System.Web.Configuration;
- Přidejte do třídy dvě privátní proměnné a metodu Page_Init, jak je znázorněno níže:
public partial class _Default : System.Web.UI.Page {
private bool _debugStatus;
private CompilationSection compilation;
private Configuration config;
protected void Page_Init(object sender, EventArgs e) {
config = WebConfigurationManager.OpenWebConfiguration("/mod9lab");
compilation =
(CompilationSection)config.GetSection("system.web/compilation");
_debugStatus = compilation.Debug;
}
}
- Do Page_Load přidejte následující kód:
lblDebugStatus.Text = "Debug set to: " + _debugStatus.ToString();
- Uložte a procházejte soubor default.aspx. Všimněte si, že ovládací prvek Popisek zobrazuje aktuální stav ladění.
- Poklikejte na ovládací prvek Tlačítko v návrháři a přidejte následující kód do události Click pro ovládací prvek Button:
compilation.Debug = !_debugStatus;
config.Save();
lblDebugStatus.Text = "Debug set to: " + compilation.Debug.ToString();
- Uložte a projděte soubor default.aspx a klikněte na tlačítko.
- Po kliknutí na každé tlačítko otevřete soubor web.config a sledujte atribut ladění v oddílu <kompilace> .
Cvičení 2: Protokolování restartování aplikace
V tomto cvičení vytvoříte kód, který vám umožní přepínat protokolování vypnutí, spouštění a rekompilace aplikací v Prohlížeč událostí.
- Přidejte rozevírací seznam do souboru default.aspx a změňte ID na ddlLogAppEvents.
- Nastavte vlastnost AutoPostBack pro DropDownList na true.
- Přidejte tři položky do kolekce Items pro DropDownList. Nastavte Text pro první položku Vyberte hodnotu a hodnotu -1. Nastavte text a hodnotu druhé položky na true a text a hodnotu třetí položky nepravda.
- Přidejte nový popisek do souboru default.aspx. Změňte ID na lblLogAppEvents.
- Otevřete zobrazení kódu na pozadí pro default.aspx a přidejte novou deklaraci pro proměnnou typu HealthMonitoringSection, jak je znázorněno níže:
public partial class _Default : System.Web.UI.Page {
private bool _debugStatus;
private CompilationSection compilation;
private Configuration config;
// new variable below
private HealthMonitoringSection health;
}
- Do existujícího kódu v Page_Init přidejte následující kód:
health = (HealthMonitoringSection)config.GetSection("system.web/healthMonitoring");
- Poklikejte na DropDownList a do události SelectedIndexChanged přidejte následující kód:
if (ddlLogAppEvents.SelectedValue != "-1") {
if (Convert.ToBoolean(ddlLogAppEvents.SelectedValue)) {
RuleSettings appRules = new
RuleSettings("AppRestartEvents",
"Application Lifetime Events",
"EventLogProvider");
health.Rules.Add(appRules);
config.Save();
} else {
health.Rules.Remove("AppRestartEvents");
config.Save();
}
}
Projděte si soubor default.aspx.
Nastavte rozevírací seznam na False.
Vymažte protokol aplikace v Prohlížeč událostí.
Kliknutím na tlačítko změňte atribut Debug pro aplikaci.
Aktualizujte protokol aplikace v Prohlížeč událostí.
- Byly zaznamenány nějaké události?
- Proč nebo proč ne?
Nastavte rozevírací seznam na Hodnotu True.
Kliknutím na tlačítko přepněte atribut Debug pro aplikaci.
Aktualizujte přihlášení aplikace k Prohlížeč událostí.
- Byly zaznamenány nějaké události?
- Jaký byl důvod vypnutí aplikace?
Experimentujte se zapnutím a vypnutím protokolování a podívejte se na změny provedené v souboru web.config.
Další informace:
Model poskytovatele ASP.NET 2.0 umožňuje vytvářet vlastní poskytovatele nejen pro instrumentaci aplikací, ale i pro mnoho dalších účelů, jako je členství, profily atd. Podrobné informace o zápisu vlastního zprostředkovatele pro protokolování událostí aplikace do textového souboru najdete na tomto odkazu.