Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Microsoft
Hinweis
Seit der Erstellung dieses Artikels wurden die ASP.NET Mitgliedschaftsanbieter durch ASP.NET Identityersetzt. Es wird dringend empfohlen, Apps so zu aktualisieren, dass sie die ASP.NET Identity Platform anstelle der Mitgliedschaftsanbieter verwenden, die zu dem Zeitpunkt dieses Artikels vorgestellt wurden. ASP.NET Identity hat eine Reihe von Vorteilen gegenüber dem ASP.NET Mitgliedschaftssystem, darunter:
- Bessere Leistung
- Verbesserte Erweiterbarkeit und Testbarkeit
- Unterstützung für OAuth, OpenID Connect und zweistufige Authentifizierung
- Unterstützung für Claims-basierte Identitäten
- Bessere Interoperabilität mit ASP.Net Core
In ASP.NET 2.0 gibt es wesentliche Änderungen an konfiguration und Instrumentierung. Mit der neuen ASP.NET-Konfigurations-API können Konfigurationsänderungen programmgesteuert vorgenommen werden. Darüber hinaus lassen viele neue Konfigurationseinstellungen neue Konfigurationen und Instrumentierungen zu.
In ASP.NET 2.0 gibt es wesentliche Änderungen an konfiguration und Instrumentierung. Mit der neuen ASP.NET-Konfigurations-API können Konfigurationsänderungen programmgesteuert vorgenommen werden. Darüber hinaus lassen viele neue Konfigurationseinstellungen neue Konfigurationen und Instrumentierungen zu.
In diesem Modul werden wir die ASP.NET-Konfigurations-API im Zusammenhang mit dem Lesen und Schreiben in die ASP.NET-Konfigurationsdateien besprechen, und wir werden auch die ASP.NET-Instrumentierung behandeln. Wir werden auch die neuen Funktionen behandeln, die in der ASP.NET Ablaufverfolgung verfügbar sind.
ASP.NET Konfigurations-API
Mit der ASP.NET-Konfigurations-API können Sie Anwendungskonfigurationsdaten mithilfe einer einzigen Programmierschnittstelle entwickeln, bereitstellen und verwalten. Sie können die Konfigurations-API verwenden, um vollständige ASP.NET Konfigurationen programmgesteuert zu entwickeln und zu ändern, ohne den XML-Code in den Konfigurationsdateien direkt zu bearbeiten. Darüber hinaus können Sie die Konfigurations-API in Konsolenanwendungen und Skripts verwenden, die Sie entwickeln, in webbasierten Verwaltungstools und in MmC-Snap-Ins (Microsoft Management Console).
Die folgenden beiden Konfigurationsverwaltungstools verwenden die Konfigurations-API und sind in .NET Framework, Version 2.0 enthalten:
- Das ASP.NET MMC-Snap-In, das die Konfigurations-API verwendet, um administrative Aufgaben zu vereinfachen und eine integrierte Ansicht der lokalen Konfigurationsdaten aus allen Ebenen der Konfigurationshierarchie bereitzustellen.
- Das Websiteverwaltungstool, mit dem Sie Konfigurationseinstellungen für lokale und Remoteanwendungen verwalten können, einschließlich gehosteter Websites.
Die ASP.NET Konfigurations-API besteht aus einer Reihe von ASP.NET Verwaltungsobjekten, die Sie zum programmgesteuerten Konfigurieren von Websites und Anwendungen verwenden können. Verwaltungsobjekte werden als .NET Framework-Klassenbibliothek implementiert. Das Programmiermodell der Konfigurations-API unterstützt die Konsistenz und Zuverlässigkeit des Codes, indem es Datentypen zur Kompilierungszeit erzwingt. Um die Verwaltung von Anwendungskonfigurationen zu vereinfachen, können Sie mit der Konfigurations-API Daten anzeigen, die aus allen Punkten in der Konfigurationshierarchie zusammengeführt werden, anstatt die Daten als separate Auflistungen aus verschiedenen Konfigurationsdateien anzuzeigen. Darüber hinaus können Sie mit der Konfigurations-API ganze Anwendungskonfigurationen bearbeiten, ohne den XML-Code in den Konfigurationsdateien direkt zu bearbeiten. Schließlich vereinfacht die API Konfigurationsaufgaben, indem Verwaltungstools unterstützt werden, z. B. das Websiteverwaltungstool. Die Konfigurations-API vereinfacht die Bereitstellung, indem die Erstellung von Konfigurationsdateien auf einem Computer und das Ausführen von Konfigurationsskripts auf mehreren Computern unterstützt wird.
Hinweis
Die Konfigurations-API unterstützt die Erstellung von IIS-Anwendungen nicht.
Arbeiten mit lokalen und Remotekonfigurationseinstellungen
Ein Configuration -Objekt stellt die zusammengeführte Ansicht der Konfigurationseinstellungen dar, die für eine bestimmte physische Entität gelten, z. B. einen Computer oder eine logische Entität, z. B. eine Anwendung oder eine Website. Die angegebene logische Entität kann auf dem lokalen Computer oder auf einem Remoteserver vorhanden sein. Wenn keine Konfigurationsdatei für eine angegebene Entität vorhanden ist, stellt das Configuration -Objekt die Standardkonfigurationseinstellungen dar, wie durch die Machine.config Datei definiert.
Sie können ein Configuration-Objekt mithilfe einer der geöffneten Konfigurationsmethoden aus den folgenden Klassen abrufen:
- Die ConfigurationManager-Klasse, wenn Es sich bei Ihrer Entität um eine Clientanwendung handelt.
- Die WebConfigurationManager-Klasse, wenn es sich bei Ihrer Entität um eine Webanwendung handelt.
Diese Methoden geben ein Configuration-Objekt zurück, das wiederum die erforderlichen Methoden und Eigenschaften zum Behandeln der zugrunde liegenden Konfigurationsdateien bereitstellt. Sie können auf diese Dateien zum Lesen oder Schreiben zugreifen.
Reading
Sie verwenden die GetSection- oder GetSectionGroup-Methode, um Konfigurationsinformationen zu lesen. Der Benutzer oder prozess, der gelesen wird, muss über Leseberechtigungen für alle Konfigurationsdateien in der Hierarchie verfügen.
Hinweis
Wenn Sie eine statische GetSection-Methode verwenden, die einen Pfadparameter verwendet, muss der Pfadparameter auf die Anwendung verweisen, in der der Code ausgeführt wird. Andernfalls wird der Parameter ignoriert, und die Konfigurationsinformationen für die aktuell ausgeführte Anwendung werden zurückgegeben.
Schreiben
Sie verwenden eine der Save-Methoden zum Schreiben von Konfigurationsinformationen. Der Benutzer oder prozess, der schreibt, muss über Schreibberechtigungen für die Konfigurationsdatei und das Verzeichnis auf der aktuellen Konfigurationshierarchieebene verfügen, sowie Berechtigungen für alle Konfigurationsdateien in der Hierarchie lesen.
Verwenden Sie eine der folgenden Speicherkonfigurationsmethoden, um eine Konfigurationsdatei zu generieren, die die geerbten Konfigurationseinstellungen für eine angegebene Entität darstellt:
- Die Save-Methode zum Erstellen einer neuen Konfigurationsdatei.
- Die SaveAs-Methode zum Generieren einer neuen Konfigurationsdatei an einem anderen Speicherort.
Konfigurationsklassen und Namespaces
Viele Konfigurationsklassen und -methoden ähneln einander. In der folgenden Tabelle werden die am häufigsten verwendeten Konfigurationsklassen und Namespaces beschrieben.
| Konfigurationsklasse oder Namespace | Beschreibung |
|---|---|
| System.Configuration-Namespace | Enthält die Hauptkonfigurationsklassen für alle .NET Framework-Anwendungen. Abschnittshandlerklassen werden verwendet, um Konfigurationsdaten für einen Abschnitt aus Methoden abzurufen, z. B. GetSection und GetSectionGroup. Diese beiden Methoden sind nicht statisch. |
| System.Configuration.Configuration-Klasse | Stellt eine Reihe von Konfigurationsdaten für einen Computer, eine Anwendung, ein Webverzeichnis oder eine andere Ressource dar. Diese Klasse enthält nützliche Methoden wie "GetSection" und "GetSectionGroup", um Konfigurationseinstellungen zu aktualisieren und Verweise auf Abschnitte und Abschnittsgruppen abzurufen. Diese Klasse wird als Rückgabetyp für Methoden verwendet, die Entwurfszeitkonfigurationsdaten abrufen, z. B. die Methoden der WebConfigurationManager- und ConfigurationManager-Klassen. |
| System.Web.Configuration-Namespace | Enthält die Abschnittshandlerklassen für die unter ASP.NET Konfigurationseinstellungen definierten ASP.NET Konfigurationsabschnitte. Abschnittshandlerklassen werden verwendet, um Konfigurationsdaten für einen Abschnitt aus Methoden abzurufen, z. B. GetSection und GetSectionGroup. |
| System.Web.Configuration.WebConfigurationManager-Klasse | Bietet nützliche Methoden zum Erhalten von Referenzen auf Laufzeit- und Entwurfskonfigurationseinstellungen. Diese Methoden verwenden die System.Configuration.Configuration-Klasse als Rückgabetyp. Sie können die statische GetSection-Methode dieser Klasse oder die nicht statische GetSection-Methode der System.Configuration.ConfigurationManager-Klasse austauschbar verwenden. Bei Webanwendungskonfigurationen wird die System.Web.Configuration.WebConfigurationManager-Klasse anstelle der System.Configuration.ConfigurationManager-Klasse empfohlen. |
| System.Configuration.Provider-Namespace | Bietet eine Möglichkeit zum Anpassen und Erweitern des Konfigurationsanbieters. Dies ist die Basisklasse für alle Anbieterklassen im Konfigurationssystem. |
| System.Web.Management-Namespace | Enthält Klassen und Schnittstellen zum Verwalten und Überwachen der Integrität von Webanwendungen. Streng genommen gilt dieser Namespace nicht als Teil der Konfigurations-API. Beispielsweise wird die Ablaufverfolgung und das Auslösen von Ereignissen durch die Klassen in diesem Namespace durchgeführt. |
| System.Management.Instrumentation-Namespace | Stellt die Klassen bereit, die für die Instrumentierung von Anwendungen erforderlich sind, um ihre Verwaltungsinformationen und Ereignisse über die Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) potenziellen Verbrauchern zur Verfügung zu stellen. ASP.NET-Integritätsüberwachung verwendet WMI zur Bereitstellung von Ereignissen. Streng genommen gilt dieser Namespace nicht als Teil der Konfigurations-API. |
Lesen aus ASP.NET Konfigurationsdateien
Die WebConfigurationManager-Klasse ist die Kernklasse zum Lesen aus ASP.NET Konfigurationsdateien. Es gibt im Wesentlichen drei Schritte zum Lesen ASP.NET Konfigurationsdateien:
- Verwenden Sie die Methode OpenWebConfiguration, um ein Configuration-Objekt zu erhalten.
- Rufen Sie einen Verweis auf den gewünschten Abschnitt in der Konfigurationsdatei ab.
- Lesen Sie die gewünschten Informationen aus der Konfigurationsdatei.
Das Configuration -Objekt stellt keine bestimmte Konfigurationsdatei dar. Stattdessen stellt sie eine zusammengeführte Ansicht der Konfiguration eines Computers, einer Anwendung oder einer Website dar. Im folgenden Codebeispiel wird ein Configuration -Objekt instanziiert, das die Konfiguration einer Webanwendung namens ProductInfo darstellt.
Configuration config = WebConfigurationManager.OpenWebConfiguration("/ProductInfo);
Hinweis
Beachten Sie, dass wenn der Pfad "/ProductInfo" nicht vorhanden ist, der obige Code die Standardkonfiguration zurückgibt, wie in der machine.config-Datei angegeben.
Sobald Sie über das Configuration-Objekt verfügen, können Sie dann die GetSection- oder GetSectionGroup-Methode verwenden, um einen Drilldown in die Konfigurationseinstellungen vorzunehmen. Das folgende Beispiel ruft einen Verweis auf die Identitätswechseleinstellungen für die oben genannte ProductInfo-Anwendung ab:
Configuration config =
WebConfigurationManager.OpenWebConfiguration("/ProductInfo);
IdentitySection section =
(IdentitySection)config.GetSection("system.web/identity");
Schreiben in ASP.NET Konfigurationsdateien
Wie beim Lesen aus Konfigurationsdateien ist die WebConfigurationManager-Klasse der Kern zum Schreiben in Asp.NET Konfigurationsdateien. Es gibt auch drei Schritte zum Schreiben in ASP.NET Konfigurationsdateien.
- Verwenden Sie die OpenWebConfiguration-Methode, um ein Configuration-Objekt zu erhalten.
- Rufen Sie einen Verweis auf den gewünschten Abschnitt in der Konfigurationsdatei ab.
- Schreiben Sie die gewünschten Informationen aus der Konfigurationsdatei mithilfe der Save- oder SaveAs-Methode.
Mit dem folgenden Code wird das Debug-Attribut des <Kompilierungselements> auf "false" geändert:
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!");
}
Wenn dieser Code ausgeführt wird, wird das Debug-Attribut des <Kompilierungselements> für die web.config-Datei der WebApp-Anwendung auf "false" festgelegt.
System.Web.Management-Namespace
Der System.Web.Management-Namespace stellt die Klassen und Schnittstellen zum Verwalten und Überwachen der Integrität von ASP.NET Anwendungen bereit.
Die Protokollierung erfolgt durch Definieren einer Regel, die Ereignisse einem Anbieter zuordnet. Die Regel definiert den Typ von Ereignissen, die an den Anbieter gesendet werden. Die folgenden Basisereignisse stehen ihnen zum Protokollieren zur Verfügung:
| Webbaseevent | Die Basisereignisklasse für alle Ereignisse. Enthält die erforderlichen Eigenschaften für alle Ereignisse wie Ereigniscode, Ereignisdetailcode, Datum und Uhrzeit des Auslösens, Sequenznummer, Ereignismeldung und Ereignisdetails. |
|---|---|
| WebManagementEvent | Die Basisereignisklasse für Verwaltungsereignisse, z. B. Anwendungslebensdauer, Anforderung, Fehler und Überwachungsereignisse. |
| WebHeartbeatEvent | Das ereignis, das von der Anwendung in regelmäßigen Intervallen generiert wird, um nützliche Laufzeitstatusinformationen zu erfassen. |
| Webauditevent | Die Basisklasse für Sicherheitsüberwachungsereignisse, die verwendet werden, um Bedingungen wie Autorisierungsfehler, Entschlüsselungsfehler usw. zu kennzeichnen. |
| Webrequestevent | Die Basisklasse für alle Informationsanforderungsereignisse. |
| Webbaseerrorevent | Die Basisklasse für alle Ereignisse, die Fehlerbedingungen angeben. |
Die verfügbaren Anbietertypen ermöglichen das Senden der Ereignisausgabe an die Ereignisanzeige, SQL Server, Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) und E-Mail. Die vorkonfigurierten Anbieter und Ereigniszuordnungen verringern den Arbeitsaufwand, der erforderlich ist, um die Ereignisausgabe zu protokollieren.
ASP.NET 2.0 verwendet standardmäßig den Ereignisprotokolldienst, um Ereignisse beim Starten und Stoppen von Anwendungsdomänen sowie alle unbehandelten Ausnahmen zu protokollieren. Dies trägt dazu bei, einige der grundlegenden Szenarien abzudecken. Angenommen, Ihre Anwendung löst eine Ausnahme aus, aber der Benutzer speichert den Fehler nicht, und Sie können ihn nicht reproduzieren. Mit der Standardregel "Ereignisprotokoll" können Sie die Ausnahme- und Stapelinformationen sammeln, um eine bessere Vorstellung davon zu erhalten, welche Art von Fehler aufgetreten ist. Ein weiteres Beispiel gilt, wenn die Anwendung den Sitzungszustand verliert. In diesem Fall können Sie im Ereignisprotokoll feststellen, ob die Anwendungsdomäne neu gestartet wird und warum die Anwendungsdomäne ursprünglich gestoppt wurde.
Darüber hinaus ist das Gesundheitsüberwachungssystem erweiterbar. Sie können z. B. benutzerdefinierte Webereignisse definieren, sie innerhalb Ihrer Anwendung auslösen und dann eine Regel definieren, um die Ereignisinformationen an einen Anbieter wie Ihre E-Mail zu senden. Auf diese Weise können Sie Ihre Instrumentierung einfach mit den Gesundheitsüberwachungsdiensten verknüpfen. Als weiteres Beispiel können Sie jedes Mal ein Ereignis auslösen, wenn eine Bestellung verarbeitet wird, und eine Regel einrichten, die jedes Ereignis an die SQL Server-Datenbank sendet. Sie können auch ein Ereignis auslösen, wenn sich ein Benutzer mehrmals hintereinander nicht anmeldet, und das Ereignis so einrichten, dass es E-Mail-basierte Anbieter verwendet.
Die Konfiguration für die Standardanbieter und Ereignisse wird in der globalen Web.config Datei gespeichert. Die globale Web.config Datei speichert alle webbasierten Einstellungen, die in der Machine.config Datei in ASP.NET 1x gespeichert wurden. Die globale Web.config Datei befindet sich im folgenden Verzeichnis:
%windir%\Microsoft.Net\Framework\v2.0.*\config\Web.config
Der <Abschnitt "healthMonitoring> " der globalen Web.config-Datei stellt Standardkonfigurationseinstellungen bereit. Sie können diese Einstellung überschreiben oder eigene Einstellungen konfigurieren, indem Sie den <Abschnitt "healthMonitoring> " in der Web.config Datei für Ihre Anwendung implementieren.
Der <Abschnitt "healthMonitoring> " der globalen Web.config Datei enthält die folgenden Elemente:
| providers | Enthält Anbieter, die für die Ereignisanzeige, WMI und SQL Server eingerichtet sind. |
|---|---|
| EventMappings | Enthält Zuordnungen für die verschiedenen WebBase-Klassen. Sie können diese Liste erweitern, wenn Sie Ihre eigene Ereignisklasse generieren. Durch das Generieren Ihrer eigenen Ereignisklasse erhalten Sie eine feinere Granularität gegenüber den Anbietern, an die Sie Informationen senden. Sie können beispielsweise unbehandelte Ausnahmen so konfigurieren, dass sie an SQL Server gesendet werden, während Sie ihre eigenen benutzerdefinierten Ereignisse an E-Mail senden. |
| Regeln | Verknüpft die eventMappings mit dem Anbieter. |
| Zwischenspeicherung | Wird mit SQL Server- und E-Mail-Anbietern verwendet, um zu bestimmen, wie oft die Ereignisse an den Anbieter übermittelt werden. |
Nachfolgend finden Sie ein Codebeispiel aus der globalen Web.config Datei.
<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>
So speichern Sie Ereignisse in der Ereignisanzeige
Wie bereits erwähnt, ist der Anbieter für die Protokollierung von Ereignissen in der Ereignisanzeige für Sie in der globalen Web.config-Datei konfiguriert. Standardmäßig werden alle Ereignisse, die auf WebBaseErrorEvent und WebFailureAuditEvent basieren, protokolliert. Sie können zusätzliche Regeln hinzufügen, um zusätzliche Informationen im Ereignisprotokoll zu protokollieren. Wenn Sie beispielsweise alle Ereignisse protokollieren möchten (d. h. jedes Ereignis, das auf WebBaseEvent basiert), können Sie ihrer Web.config Datei die folgende Regel hinzufügen:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events"
provider="EventLogProvider" profile="Critical" />
</rules>
</healthMonitoring>
Diese Regel würde die Ereigniszuordnung Alle Ereignisse mit dem Ereignisprotokollanbieter verknüpfen. Sowohl eventMapping als auch der Anbieter sind in der globalen Web.config Datei enthalten.
So speichern Sie Ereignisse in SQL Server
Diese Methode verwendet die ASPNETDB-Datenbank , die vom tool Aspnet_regsql.exe generiert wird. Der Standardanbieter verwendet die LocalSqlServer-Verbindungszeichenfolge, die entweder eine dateibasierte Datenbank im ordner App_data oder die lokale SQLExpress-Instanz von SQL Server verwendet. Sowohl die LocalSqlServer-Verbindungszeichenfolge als auch der SqlProvider sind in der globalen Web.config Datei konfiguriert.
Die LocalSqlServer-Verbindungszeichenfolge in der globalen Web.config Datei sieht wie folgt aus:
<connectionStrings>
<add name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
Wenn Sie eine andere SQL Server-Instanz verwenden möchten, müssen Sie das Aspnet_regsql.exe Tool verwenden, das sich im Ordner %windir%\Microsoft.Net\Framework\v2.0.* befindet. Verwenden Sie das tool Aspnet_regsql.exe, um eine benutzerdefinierte ASPNETDB-Datenbank in der SQL Server-Instanz zu generieren, fügen Sie dann die Verbindungszeichenfolge zu Ihrer Anwendungskonfigurationsdatei hinzu, und fügen Sie dann einen Anbieter mithilfe der neuen Verbindungszeichenfolge hinzu. Nachdem Sie die ASPNETDB-Datenbank erstellt haben, müssen Sie eine Regel festlegen, um ein eventMapping mit dem sqlProvider zu verknüpfen.
Unabhängig davon, ob Sie den Standard-SqlProvider verwenden oder Ihren eigenen Anbieter konfigurieren, müssen Sie eine Regel hinzufügen, die den Anbieter mit einer Ereigniszuordnung verknüpft. Die folgende Regel verknüpft den neuen Anbieter, den Sie oben erstellt haben, mit der Ereigniszuordnung Alle Ereignisse. Diese Regel protokolliert alle Ereignisse basierend auf WebBaseEvent und sendet sie an den MySqlWebEventProvider, der die MYASPNETDB-Verbindungszeichenfolge verwendet. Der folgende Code fügt eine Regel hinzu, um den Anbieter mit einer Ereigniskarte zu verknüpfen:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events"
provider="MySqlWebEventProvider" profile="Critical"/>
</rules>
</healthMonitoring>
Wenn Sie nur Fehler an SQL Server senden möchten, können Sie die folgende Regel hinzufügen:
<add name="All Errors"
eventName="All Errors"
provider="MySqlWebEventProvider"
profile="Critical"/>
Weiterleiten von Ereignissen an WMI
Sie können die Ereignisse auch an WMI weiterleiten. Der WMI-Anbieter ist standardmäßig für Sie in der globalen Web.config Datei konfiguriert.
Im folgenden Codebeispiel wird eine Regel zum Weiterleiten der Ereignisse an WMI hinzugefügt:
<providers>
<add name="WmiWebEventProvider"
type="System.Web.Management.WmiWebEventProvider,System.Web,
Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
Sie müssen eine Regel hinzufügen, um dem Anbieter ein EventMapping zuzuordnen, und auch eine WMI-Listeneranwendung, um auf die Ereignisse zu lauschen. Im folgenden Codebeispiel wird eine Regel hinzugefügt, die den WMI-Anbieter mit der Ereigniszuordnung „Alle Ereignisse“ verknüpft.
<rules>
<add name="All Events"
eventName="All Events" provider="WmiWebEventProvider"
profile="Critical" />
</rules>
Weiterleiten von Ereignissen per E-Mail
Sie können Ereignisse auch an E-Mails weiterleiten. Achten Sie darauf, welche Ereignisregeln Sie Ihrem E-Mail-Anbieter zuordnen, da Sie versehentlich viele Informationen senden können, die für SQL Server oder das Ereignisprotokoll besser geeignet sein können. Es gibt zwei E-Mail-Anbieter; SimpleMailWebEventProvider und TemplatedMailWebEventProvider. Jede verfügt über die gleichen Konfigurationsattribute, mit Ausnahme der Attribute "template" und "detailedTemplateErrors", die beide nur im TemplatedMailWebEventProvider verfügbar sind.
Hinweis
Keine dieser E-Mail-Anbieter ist für Sie konfiguriert. Sie müssen sie ihrer Web.config Datei hinzufügen.
Der Hauptunterschied zwischen diesen beiden E-Mail-Anbietern besteht darin, dass SimpleMailWebEventProvider E-Mails in einer generischen Vorlage sendet, die nicht geändert werden kann. Die Beispieldatei Web.config fügt diesen E-Mail-Anbieter mithilfe der folgenden Regel zur Liste der konfigurierten Anbieter hinzu:
<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"/>
Die folgende Regel wird auch hinzugefügt, um den E-Mail-Anbieter mit der Ereigniszuordnung "Alle Ereignisse " zu verknüpfen:
<add name="All Events" eventName="All Events"
provider="mySimple-mailWebEventProvider" profile="Critical"/>
ASP.NET 2.0-Ablaufverfolgung
Drei bedeutende Verbesserungen wurden bei der Ablaufverfolgung in ASP.NET 2.0 eingeführt.
- Integrierte Nachverfolgungsfunktion
- Programmgesteuerter Zugriff auf Tracing-Nachrichten
- Verbesserte Ablaufverfolgung auf Anwendungsebene
Integrierte Ablaufverfolgungsfunktionalität
Sie können Nachrichten, die von der System.Diagnostics.Trace-Klasse ausgegeben werden, jetzt an die ASP.NET Ablaufverfolgung weiterleiten und Nachrichten, die von der ASP.NET Ablaufverfolgung ausgegeben werden, an System.Diagnostics.Trace weiterleiten. Sie können auch ASP.NET Instrumentationsereignisse an System.Diagnostics.Trace weiterleiten. Diese Funktionalität wird durch das neue writeToDiagnosticsTrace-Attribut des <Trace-Elements> bereitgestellt. Wenn dieser Boolesche Wert true ist, werden ASP.NET-Ablaufverfolgungsmeldungen an die System.Diagnostics-Ablaufverfolgungsinfrastruktur weitergeleitet, damit sie von Listenern, die zum Anzeigen solcher Meldungen registriert sind, verwendet werden können.
Programmgesteuerter Zugriff auf Tracing-Meldungen
ASP.NET 2.0 ermöglicht den programmatischen Zugriff auf alle Ablaufverfolgungsmeldungen über die TraceContextRecord-Klasse und die TraceRecords-Auflistung. Die effizienteste Möglichkeit für den Zugriff auf Ablaufverfolgungsmeldungen besteht darin, einen TraceContextEventHandler-Delegaten (auch neu in ASP.NET 2.0) zu registrieren, um das neue TraceFinished-Ereignis zu verarbeiten. Sie können dann die Ablaufverfolgungsmeldungen nach Wunsch durchlaufen.
Das folgende Codebeispiel veranschaulicht folgendes:
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));
}
}
Im obigen Beispiel durchläuft ich die TraceRecords-Auflistung und schreibe dann jede Nachricht in den Antwortdatenstrom.
Verbesserte Ablaufverfolgung auf Anwendungsebene
Die Ablaufverfolgung auf Anwendungsebene wird durch die Einführung des neuen Attributs "mostRecent " des <Ablaufverfolgungselements> verbessert. Dieses Attribut gibt an, ob die neueste Ablaufverfolgungsausgabe auf Anwendungsebene angezeigt wird und ältere Ablaufverfolgungsdaten, die über die durch das requestLimit festgelegten Grenzwerte hinausgehen, verworfen werden. Wenn 'false', werden Tracking-Daten für Anforderungen angezeigt, bis das Attribut 'requestLimit' erreicht ist.
ASP.NET Befehlszeilentools
Es gibt mehrere Befehlszeilentools, die bei der Konfiguration von ASP.NET helfen. ASP.NET Entwickler sollten mit dem aspnet_regiis.exe Tool vertraut sein. ASP.NET 2.0 bietet drei weitere Befehlszeilentools zur Unterstützung der Konfiguration.
Die folgenden Befehlszeilentools sind verfügbar:
| Werkzeug | Verwenden Sie |
|---|---|
| aspnet_regiis.exe | Ermöglicht die Registrierung von ASP.NET mit IIS. Es gibt zwei Versionen dieser Tools, die mit ASP.NET 2.0 ausgeliefert werden, eines für 32-Bit-Systeme (im Framework-Ordner) und eine für 64-Bit-Systeme (im Ordner "Framework64").) Die 64-Bit-Version wird nicht auf einem 32-Bit-Betriebssystem installiert. |
| aspnet_regsql.exe | Das ASP.NET SQL Server-Registrierungstool wird verwendet, um eine Microsoft SQL Server-Datenbank für die Verwendung durch die SQL Server-Anbieter in ASP.NET zu erstellen oder Optionen aus einer vorhandenen Datenbank hinzuzufügen oder daraus zu entfernen. Die datei "Aspnet_regsql.exe" befindet sich im Ordner "[drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber" auf Ihrem Webserver. |
| aspnet_regbrowsers.exe | Das ASP.NET Browserregistrierungstool analysiert und kompiliert alle systemweiten Browserdefinitionen in einer Assembly und installiert die Assembly im globalen Assemblycache. Das Tool verwendet die Browserdefinitionsdateien (. BROWSER-Dateien) aus dem Unterverzeichnis .NET Framework Browser. Das Tool befindet sich im Verzeichnis %SystemRoot%\Microsoft.NET\Framework\version\. |
| aspnet_compiler.exe | Mit dem ASP.NET Kompilierungstool können Sie eine ASP.NET Webanwendung entweder direkt oder für die Bereitstellung an einem Zielspeicherort wie einem Produktionsserver kompilieren. Die direkte Kompilierung trägt zur Anwendungsleistung bei, da Endbenutzer bei der Kompilierung der Anwendung keine Verzögerung bei der ersten Anforderung haben. |
Da das aspnet_regiis.exe Tool nicht neu bei ASP.NET 2.0 ist, werden wir es hier nicht besprechen.
ASP.NET SQL Server-Registrierungstool – aspnet_regsql.exe
Sie können verschiedene Arten von Optionen mithilfe des ASP.NET SQL Server-Registrierungstools festlegen. Sie können eine SQL-Verbindung angeben, angeben, welche ASP.NET Anwendungsdienste SQL Server zum Verwalten von Informationen verwenden, angeben, welche Datenbank oder Tabelle für die SQL-Cacheabhängigkeit verwendet wird, und Unterstützung für die Verwendung von SQL Server zum Speichern von Prozeduren und Sitzungsstatus hinzufügen oder entfernen.
Mehrere ASP.NET Anwendungsdienste basieren auf einem Anbieter, um das Speichern und Abrufen von Daten aus einer Datenquelle zu verwalten. Jeder Anbieter ist spezifisch für die Datenquelle. ASP.NET enthält einen SQL Server-Anbieter für die folgenden ASP.NET Features:
- Membership (die SqlMembershipProvider-Klasse ).
- Rollenverwaltung (die SqlRoleProvider-Klasse ).
- Profile (die SqlProfileProvider-Klasse ).
- Webpart-Personalisierung (die SqlPersonalizationProvider-Klasse ).
- Webereignisse (die SqlWebEventProvider-Klasse ).
Wenn Sie ASP.NET installieren, enthält die Machine.config Datei für Ihren Server Konfigurationselemente, die SQL Server-Anbieter für jedes der ASP.NET Features angeben, die auf einem Anbieter basieren. Diese Anbieter sind standardmäßig für die Verbindung mit einer lokalen Benutzerinstanz von SQL Server Express 2005 konfiguriert. Wenn Sie die von den Anbietern verwendete Standardverbindungszeichenfolge ändern, müssen Sie die SQL Server-Datenbank und die Datenbankelemente für das ausgewählte Feature mithilfe von Aspnet_regsql.exeinstallieren, bevor Sie eine der in der Computerkonfiguration konfigurierten ASP.NET Features verwenden können. Wenn die datenbank, die Sie mit dem SQL-Registrierungstool angeben, noch nicht vorhanden ist (aspnetdb ist die Standarddatenbank, wenn sie nicht in der Befehlszeile angegeben ist), muss der aktuelle Benutzer über Berechtigungen zum Erstellen von Datenbanken in SQL Server sowie zum Erstellen von Schemaelementen in einer Datenbank verfügen.
SQL-Cacheabhängigkeit
Ein erweitertes Feature der ASP.NET Ausgabezwischenspeicherung ist die SQL-Cacheabhängigkeit. Sql-Cacheabhängigkeit unterstützt zwei verschiedene Betriebsmodi: eine, die eine ASP.NET Implementierung von Tabellenabfragen und einen zweiten Modus verwendet, der die Abfragebenachrichtigungsfeatures von SQL Server 2005 verwendet. Das SQL-Registrierungstool kann verwendet werden, um den Vorgangsmodus für die Tabellenabfragung zu konfigurieren.
Sitzungszustand
Standardmäßig werden Sitzungszustandswerte und Informationen im Arbeitsspeicher innerhalb des ASP.NET Prozesses gespeichert. Alternativ können Sie Sitzungsdaten in einer SQL Server-Datenbank speichern, in der sie von mehreren Webservern gemeinsam genutzt werden kann. Wenn die Datenbank, die Sie für den Sitzungsstatus mit dem SQL-Registrierungstool angeben, noch nicht vorhanden ist, muss der aktuelle Benutzer über Berechtigungen zum Erstellen von Datenbanken in SQL Server sowie zum Erstellen von Schemaelementen in einer Datenbank verfügen. Wenn die Datenbank vorhanden ist, muss der aktuelle Benutzer über Berechtigungen zum Erstellen von Schemaelementen in der vorhandenen Datenbank verfügen.
Um die Sitzungsstatusdatenbank auf SQL Server zu installieren, führen Sie das Aspnet_regsql.exe Tool aus, und geben Sie die folgenden Informationen mit dem Befehl an:
- Der Name der SQL Server-Instanz unter Verwendung der Option -S .
- Die Anmeldeinformationen für ein Konto, das über die Berechtigung zum Erstellen einer Datenbank auf einem Computer mit SQL Server verfügt. Verwenden Sie die Option -E , um den aktuell angemeldeten Benutzer zu verwenden, oder verwenden Sie die Option -U , um eine Benutzer-ID zusammen mit der Option -P anzugeben, um ein Kennwort anzugeben.
- Die Befehlszeilenoption -ssadd zum Hinzufügen der Sitzungsstatusdatenbank.
Standardmäßig können Sie das Aspnet_regsql.exe Tool nicht verwenden, um die Sitzungsstatusdatenbank auf einem Computer zu installieren, auf dem SQL Server 2005 Express Edition ausgeführt wird.
Das ASP.NET Browserregistrierungstool - aspnet_regbrowsers.exe
In ASP.NET Version 1.1 enthielt die Machine.config Datei einen Abschnitt namens <"browserCaps>". Dieser Abschnitt enthält eine Reihe von XML-Einträgen, die die Konfigurationen für verschiedene Browser basierend auf einem regulären Ausdruck definiert haben. Für ASP.NET Version 2.0 definiert eine neue .BROWSER-Datei die Parameter eines bestimmten Browsers mithilfe von XML-Einträgen. Sie fügen Informationen zu einem neuen Browser hinzu, indem Sie eine neue .BROWSER-Datei zu dem Ordner hinzufügen, der sich unter %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers auf Ihrem System befindet.
Da eine Anwendung nicht jedes Mal eine .config-Datei liest, wenn sie Browserinformationen benötigt, können Sie eine neue .BROWSER-Datei erstellen und Aspnet_regbrowsers.exe ausführen, um die erforderlichen Änderungen an der Assembly hinzuzufügen. Dadurch kann der Server sofort auf die neuen Browserinformationen zugreifen, damit Sie keine Ihrer Anwendungen herunterfahren müssen, um die Informationen aufzunehmen. Eine Anwendung kann über die Browsereigenschaft der aktuellen HttpRequest auf Browserfunktionen zugreifen.
Die folgenden Optionen stehen beim Ausführen von aspnet_regbrowser.exezur Verfügung:
| Auswahl | Beschreibung |
|---|---|
| -? | Zeigt den Aspnet_regbbrowsers.exe Hilfetext im Befehlsfenster an. |
| -i | Erstellt die Assembly der Laufzeitbrowserfunktionen und installiert sie im globalen Assemblycache. |
| -u | Deinstalliert die Assembly der Laufzeitbrowserfunktionen aus dem globalen Assemblycache. |
Das ASP.NET Kompilierungstool - aspnet_compiler.exe
Das ASP.NET Kompilierungstool kann auf zwei allgemeine Arten verwendet werden: für die direkte Kompilierung und Kompilierung für die Bereitstellung, bei der ein Zielausgabeverzeichnis angegeben ist.
Kompilieren einer Anwendung an Ort und Stelle
Das ASP.NET Kompilierungstool kann eine Anwendung direkt kompilieren, d. h. es imitiert das Verhalten, mehrere Anforderungen an die Anwendung zu stellen, wodurch eine normale Kompilierung verursacht wird. Benutzer einer vorab kompilierten Website haben keine Verzögerung, die durch das Kompilieren der Seite bei der ersten Anforderung verursacht wird.
Wenn Sie eine Website vorkompilieren, gelten die folgenden Elemente:
- Die Website behält ihre Dateien und verzeichnisstruktur bei.
- Sie müssen Über Compiler für alle Programmiersprachen verfügen, die von der Website auf dem Server verwendet werden.
- Wenn die Kompilierung einer Datei fehlschlägt, schlägt die gesamte Website die Kompilierung fehl.
Sie können eine Anwendung auch neu kompilieren, nachdem sie neue Quelldateien hinzugefügt haben. Das Tool kompiliert nur die neuen oder geänderten Dateien, es sei denn, Sie schließen die Option -c ein.
Hinweis
Die Kompilierung einer Anwendung, die eine geschachtelte Anwendung enthält, kompiliert die geschachtelte Anwendung nicht. Die geschachtelte Anwendung muss separat kompiliert werden.
Kompilieren einer Anwendung für die Bereitstellung
Kompilieren Sie eine Anwendung zur Bereitstellung (zum Kompilieren in ein Zielverzeichnis), indem Sie den Parameter targetDir angeben. "targetDir" kann der endgültige Speicherort für die Webanwendung sein, oder die kompilierte Anwendung kann weiter bereitgestellt werden. Mit der Option "-u " wird die Anwendung so kompiliert, dass Sie Änderungen an bestimmten Dateien in der kompilierten Anwendung vornehmen können, ohne sie erneut zu kompilieren. Aspnet_compiler.exe unterscheidet zwischen statischen und dynamischen Dateitypen und behandelt sie beim Erstellen der resultierenden Anwendung unterschiedlich.
- Statische Dateitypen sind solche, die keinen zugeordneten Compiler oder Buildanbieter haben, z. B. Dateien, deren Benannte Erweiterungen haben, z. B. .css, .gif, .htm, .html, .jpg, .js usw. Diese Dateien werden einfach an den Zielspeicherort kopiert, wobei ihre relativen Stellen in der Verzeichnisstruktur erhalten bleiben.
- Dynamische Dateitypen sind solche, die über einen zugeordneten Compiler oder Buildanbieter verfügen, einschließlich Dateien mit ASP. NET-spezifische Dateinamenerweiterungen wie .asax, .ascx, .ashx, .aspx, .browser, .master usw. Das ASP.NET Kompilierungstool generiert Assemblys aus diesen Dateien. Wenn die Option -u ausgelassen wird, erstellt das Tool auch Dateien mit der Dateinamenerweiterung. KOMPILIERT, die die ursprünglichen Quelldateien ihrer Assembly zuordnen. Um sicherzustellen, dass die Verzeichnisstruktur der Anwendungsquelle beibehalten wird, generiert das Tool Platzhalterdateien an den entsprechenden Speicherorten in der Zielanwendung.
Sie müssen die Option "-u " verwenden, um anzugeben, dass der Inhalt der kompilierten Anwendung geändert werden kann. Andernfalls werden nachfolgende Änderungen ignoriert oder führen zu Laufzeitfehlern.
In der folgenden Tabelle wird beschrieben, wie das ASP.NET Kompilierungstool unterschiedliche Dateitypen verarbeitet, wenn die Option -u enthalten ist.
| Dateityp | Compileraktion |
|---|---|
| ASCX, .aspx, .master | Diese Dateien werden in Markup und Quellcode aufgeteilt, der sowohl CodeBehind-Dateien als auch CodeBehind enthält, der in <script runat="server">-Elemente eingeschlossen sind. Quellcode wird in Assemblys kompiliert, mit Namen, die von einem Hashingalgorithmus abgeleitet werden, und die Assemblys werden im Bin-Verzeichnis platziert. Jeder Inlinecode, d. h. code, der zwischen dem <% und %> eckigen Klammern eingeschlossen ist, ist im Markup enthalten und nicht kompiliert. Neue Dateien mit demselben Namen wie die Quelldateien werden erstellt, um das Markup zu enthalten und in den entsprechenden Ausgabeverzeichnissen zu platzieren. |
| .ashx, .asmx | Diese Dateien werden nicht kompiliert, sondern unverändert in die Ausgabeverzeichnisse verschoben. Wenn Sie den Handlercode kompiliert haben möchten, platzieren Sie den Code in Quellcodedateien im verzeichnis App_Code. |
| .cs, .vb, .jsl, .cpp (nicht einschließlich Code-Behind-Dateien für die zuvor aufgeführten Dateitypen) | Diese Dateien werden kompiliert und als Ressource in Assemblys eingeschlossen, die darauf verweisen. Quelldateien werden nicht in das Ausgabeverzeichnis kopiert. Wenn auf eine Codedatei nicht verwiesen wird, wird sie nicht kompiliert. |
| Benutzerdefinierte Dateitypen | Diese Dateien werden nicht kompiliert. Diese Dateien werden in die entsprechenden Ausgabeverzeichnisse kopiert. |
| Quellcodedateien im Unterverzeichnis App_Code | Diese Dateien werden in Assemblys kompiliert und im Bin-Verzeichnis platziert. |
| .resx- und .resource-Dateien im Unterverzeichnis App_GlobalResources | Diese Dateien werden in Assemblys kompiliert und im Bin-Verzeichnis platziert. Unter dem Hauptausgabeverzeichnis wird kein App_GlobalResources Unterverzeichnis erstellt, und es werden keine RESX- oder RESSOURCEN-Dateien im Quellverzeichnis in die Ausgabeverzeichnisse kopiert. |
| .resx- und .resource-Dateien im Unterverzeichnis App_LocalResources | Diese Dateien werden nicht kompiliert und in die entsprechenden Ausgabeverzeichnisse kopiert. |
| .skin-Dateien im Unterverzeichnis App_Themes | Die SKIN-Dateien und statische Designdateien werden nicht kompiliert und in die entsprechenden Ausgabeverzeichnisse kopiert. |
| .browser Web.config Statische Dateitypen Assemblys, die bereits im Bin-Verzeichnis vorhanden sind | Diese Dateien werden unverändert in die Ausgabeverzeichnisse kopiert. |
In der folgenden Tabelle wird beschrieben, wie das ASP.NET Kompilierungstool unterschiedliche Dateitypen verarbeitet, wenn die Option -u ausgelassen wird.
| Dateityp | Compileraktion |
|---|---|
| .aspx, ASMX, ASHX, MASTER | Diese Dateien werden in Markup und Quellcode aufgeteilt, der sowohl CodeBehind-Dateien als auch CodeBehind enthält, der in <script runat="server">-Elemente eingeschlossen sind. Quellcode wird in Assemblys kompiliert, mit Namen, die von einem Hashingalgorithmus abgeleitet werden. Die resultierenden Assemblys werden im Bin-Verzeichnis platziert. Jeder Inlinecode, d. h. code, der zwischen dem <% und %> eckigen Klammern eingeschlossen ist, ist im Markup enthalten und nicht kompiliert. Der Compiler erstellt neue Dateien, die das Markup mit demselben Namen wie die Quelldateien enthalten sollen. Diese resultierenden Dateien werden im Bin-Verzeichnis abgelegt. Der Compiler erstellt auch Dateien mit demselben Namen wie die Quelldateien, aber mit der Erweiterung . KOMPILIERT, die Zuordnungsinformationen enthalten. Die .COMPILED-Dateien werden in den Ausgabeverzeichnissen abgelegt, die dem ursprünglichen Speicherort der Quelldateien entsprechen. |
| ASCX | Diese Dateien werden in Markup und Quellcode aufgeteilt. Der Quellcode wird in Assemblys kompiliert und im Bin-Verzeichnis platziert, mit Namen, die von einem Hashingalgorithmus abgeleitet werden. Es werden keine Markupdateien generiert. |
| .cs, .vb, .jsl, .cpp (nicht einschließlich Code-Behind-Dateien für die zuvor aufgeführten Dateitypen) | Quellcode, auf den von den Assemblies verwiesen wird, die aus ASCX-, ASHX- oder ASPX-Dateien generiert werden, wird in Assemblies kompiliert und im Bin-Verzeichnis platziert. Es werden keine Quelldateien kopiert. |
| Benutzerdefinierte Dateitypen | Diese Dateien werden wie dynamische Dateien kompiliert. Je nach Dateityp, auf dem sie basieren, kann der Compiler Zuordnungsdateien in den Ausgabeverzeichnissen platzieren. |
| Dateien im Unterverzeichnis App_Code | Quellcodedateien in diesem Unterverzeichnis werden in Assemblys kompiliert und im Bin-Verzeichnis platziert. |
| Dateien im Unterverzeichnis App_GlobalResources | Diese Dateien werden in Assemblys kompiliert und im Bin-Verzeichnis platziert. Unter dem Hauptausgabeverzeichnis wird kein App_GlobalResources Unterverzeichnis erstellt. Wenn die Konfigurationsdatei das Attribut `appliesTo="All"` festlegt, werden .resx- und .resources-Dateien in die Ausgabeverzeichnisse kopiert. Sie werden nicht kopiert, wenn sie von einem BuildProvider referenziert werden. |
| .resx- und .resource-Dateien im Unterverzeichnis App_LocalResources | Diese Dateien werden in Assemblys mit eindeutigen Namen kompiliert und im Bin-Verzeichnis platziert. Es werden keine .resx- oder Resource-Dateien in die Ausgabeverzeichnisse kopiert. |
| .skin-Dateien im Unterverzeichnis App-Themes | Themen werden in Assemblys kompiliert und im Bin-Verzeichnis platziert. Stub-Dateien werden für .skin-Dateien erstellt und im entsprechenden Ausgabeverzeichnis abgelegt. Statische Dateien (z. B. .css) werden in die Ausgabeverzeichnisse kopiert. |
| .browser Web.config Statische Dateitypen Assemblys, die bereits im Bin-Verzeichnis vorhanden sind | Diese Dateien werden unverändert in das Ausgabeverzeichnis kopiert. |
Unveränderliche Assembly-Namen
Einige Szenarien, z. B. das Bereitstellen einer Webanwendung mit dem MSI Windows Installer, erfordern die Verwendung konsistenter Dateinamen und Inhalte sowie konsistente Verzeichnisstrukturen, um Assemblys oder Konfigurationseinstellungen für Updates zu identifizieren. In diesen Fällen können Sie die Option "-fixednames" verwenden, um anzugeben, dass das ASP.NET Kompilierungstool eine Assembly für jede Quelldatei kompilieren soll, anstatt zu verwenden, wo mehrere Seiten in Assemblys kompiliert werden. Dies kann zu einer großen Anzahl von Assemblys führen. Wenn Sie also Bedenken bezüglich der Skalierbarkeit haben, sollten Sie diese Option mit Vorsicht verwenden.
Strong-Name Kompilierung
Die Optionen "-aptca", "-delaysign", "-keycontainer " und "-keyfile " werden bereitgestellt, damit Sie Aspnet_compiler.exe verwenden können, um stark benannte Assemblys zu erstellen, ohne das Strong Name Tool (Sn.exe) separat zu verwenden. Diese Optionen entsprechen AllowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute und AssemblyKeyFileAttribute.
Die Diskussion über diese Attribute liegt außerhalb des Umfangs dieses Kurses.
Labs
Jede der folgenden Labore baut auf den vorherigen Laboren auf. Sie müssen sie in der gewünschten Reihenfolge ausführen.
Übung 1: Verwenden der Konfigurations-API
- Erstellen Sie eine neue Website namens mod9lab.
- Fügen Sie der Website eine neue Webkonfigurationsdatei hinzu.
- Fügen Sie der datei web.config Folgendes hinzu:
<authorization>
<deny users="?"/>
</authorization>
<identity impersonate="true"/>
Dadurch wird sichergestellt, dass Sie über die Berechtigung zum Speichern von Änderungen an der web.config Datei verfügen.
- Fügen Sie ein neues Bezeichnungssteuerelement zu Default.aspx hinzu, und ändern Sie die ID in "lblDebugStatus".
- Fügen Sie dem Default.aspx ein neues Schaltflächen-Steuerelement hinzu.
- Ändern Sie die ID des Schaltflächensteuerelements in „btnToggleDebug“ und den Text in „Debugstatus umschalten“.
- Öffnen Sie die Codeansicht für die Code-Behind-Datei von Default.aspx und fügen Sie wie folgt eine using-Anweisung für System.Web.Configuration hinzu:
using System.Web.Configuration;
- Fügen Sie der Klasse zwei private Variablen und eine Page_Init Methode hinzu, wie unten dargestellt:
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;
}
}
- Fügen Sie den folgenden Code zu Page_Load hinzu:
lblDebugStatus.Text = "Debug set to: " + _debugStatus.ToString();
- Speichern und durchsuchen Sie default.aspx. Beachten Sie, dass das Bezeichnungssteuerelement den aktuellen Debugstatus anzeigt.
- Doppelklicken Sie im Designer auf das Schaltflächensteuerelement, und fügen Sie dem Click-Ereignis für das Schaltflächensteuerelement den folgenden Code hinzu:
compilation.Debug = !_debugStatus;
config.Save();
lblDebugStatus.Text = "Debug set to: " + compilation.Debug.ToString();
- Speichern Sie default.aspx und öffnen Sie es, dann klicken Sie auf die Schaltfläche.
- Öffnen Sie die web.config-Datei nach jedem Klick auf eine Schaltfläche und überprüfen Sie das Debug-Attribut im <Kompilierungsabschnitt>.
Übung 2: Protokollierung von Anwendungsneustarts
In dieser Übung erstellen Sie Code, mit dem Sie die Protokollierung von Anwendungsschließungen, Starts und Rekompilationen in der Ereignisanzeige aktivieren und deaktivieren können.
- Fügen Sie der default.aspx eine DropDownList hinzu, und ändern Sie die ID in "ddlLogAppEvents".
- Legen Sie die AutoPostBack-Eigenschaft für die DropDownList auf "true" fest.
- Fügen Sie der Items-Auflistung für die DropDownList drei Elemente hinzu. Legen Sie den Text für das erste Element "Wert auswählen" und den Wert -1 fest. Legen Sie den Text und den Wert des zweiten Elements auf True und den Text und den Wert des dritten Elements auf False fest.
- Fügen Sie dem default.aspx eine neue Bezeichnung hinzu. Ändern Sie die ID in "lblLogAppEvents".
- Öffnen Sie die CodeBehind-Ansicht für default.aspx, und fügen Sie eine neue Deklaration für eine Variable vom Typ HealthMonitoringSection hinzu, wie unten gezeigt:
public partial class _Default : System.Web.UI.Page {
private bool _debugStatus;
private CompilationSection compilation;
private Configuration config;
// new variable below
private HealthMonitoringSection health;
}
- Fügen Sie dem vorhandenen Code in Page_Init den folgenden Code hinzu:
health = (HealthMonitoringSection)config.GetSection("system.web/healthMonitoring");
- Doppelklicken Sie auf die DropDownList, und fügen Sie dem SelectedIndexChanged-Ereignis den folgenden Code hinzu:
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();
}
}
Durchsuchen Sie default.aspx.
Legen Sie das Dropdown auf "False" fest.
Löschen Sie das Anwendungsprotokoll in der Ereignisanzeige.
Klicken Sie auf die Schaltfläche, um das Debug-Attribut für die Anwendung zu ändern.
Aktualisieren Sie das Anwendungsprotokoll in der Ereignisanzeige.
- Wurden Ereignisse protokolliert?
- Warum oder warum nicht?
Legen Sie das Dropdown auf "True" fest.
Klicken Sie auf die Schaltfläche, um das Debug-Attribut für die Anwendung umzuschalten.
Aktualisieren Sie die Anmeldedaten in der Ereignisanzeige.
- Wurden Ereignisse protokolliert?
- Was war der Grund für das Herunterfahren der App?
Experimentieren Sie mit dem Aktivieren und Deaktivieren der Protokollierung, und schauen Sie sich die Änderungen an, die an der web.config Datei vorgenommen wurden.
Weitere Informationen:
mit ASP.NET 2.0-Anbietermodell können Sie eigene Anbieter für nicht nur Anwendungsinstrumentation erstellen, sondern auch für viele andere Anwendungen wie Mitgliedschaft, Profile usw. Ausführliche Informationen zum Schreiben eines benutzerdefinierten Anbieters zum Protokollieren von Anwendungsereignissen in eine Textdatei finden Sie unter diesem Link.