Udostępnij za pośrednictwem


Konfiguracja i instrumentacja

autor: Microsoft

Uwaga

Od czasu napisania tego artykułu dostawcy członkostwa ASP.NET zostali zastąpioni przez ASP.NET Identity. Zdecydowanie zalecamy aktualizowanie aplikacji w celu korzystania z platformy ASP.NET Identity , a nie dostawców członkostwa w momencie pisania tego artykułu. ASP.NET Identity ma wiele zalet w porównaniu z systemem członkostwa ASP.NET, w tym :

  • Lepsza wydajność
  • Ulepszona rozszerzalność i możliwość testowania
  • Obsługa uwierzytelniania OAuth, OpenID Connect i uwierzytelniania dwuskładnikowego
  • Obsługa tożsamości opartej na oświadczeniach
  • Lepsze współdziałanie z platformą ASP.Net Core

W ASP.NET 2.0 wprowadzono poważne zmiany w konfiguracji i instrumentacji. Nowy interfejs API konfiguracji ASP.NET umożliwia programowe wprowadzanie zmian konfiguracji. Ponadto istnieje wiele nowych ustawień konfiguracji, które umożliwiają korzystanie z nowych konfiguracji i instrumentacji.

W ASP.NET 2.0 wprowadzono poważne zmiany w konfiguracji i instrumentacji. Nowy interfejs API konfiguracji ASP.NET umożliwia programowe wprowadzanie zmian konfiguracji. Ponadto istnieje wiele nowych ustawień konfiguracji, które umożliwiają korzystanie z nowych konfiguracji i instrumentacji.

W tym module omówimy ASP.NET interfejsu API konfiguracji w odniesieniu do odczytywania i zapisywania w plikach konfiguracji ASP.NET, a także omówimy instrumentację ASP.NET. Omówimy również nowe funkcje dostępne w ASP.NET śledzenia.

interfejs API konfiguracji ASP.NET

Interfejs API konfiguracji ASP.NET umożliwia tworzenie i wdrażanie danych konfiguracji aplikacji oraz zarządzanie nimi przy użyciu jednego interfejsu programowania. Za pomocą interfejsu API konfiguracji można programowo opracowywać i modyfikować kompletne konfiguracje ASP.NET bez bezpośredniego edytowania kodu XML w plikach konfiguracji. Ponadto interfejs API konfiguracji można używać w aplikacjach konsolowych i skryptach, które tworzysz, w narzędziach do zarządzania opartego na sieci Web oraz w przystawkach programu Microsoft Management Console (MMC).

Następujące dwa narzędzia do zarządzania konfiguracją używają interfejsu API konfiguracji i są dołączone do .NET Framework w wersji 2.0:

  • Przystawka programu MMC ASP.NET, która używa interfejsu API konfiguracji do uproszczenia zadań administracyjnych, zapewniając zintegrowany widok lokalnych danych konfiguracji ze wszystkich poziomów hierarchii konfiguracji.
  • Narzędzie administracji witrynami sieci Web, które umożliwia zarządzanie ustawieniami konfiguracji dla aplikacji lokalnych i zdalnych, w tym witryn hostowanych.

Interfejs API konfiguracji ASP.NET składa się z zestawu obiektów zarządzania ASP.NET, których można użyć do programowego konfigurowania witryn sieci Web i aplikacji. Obiekty zarządzania są implementowane jako biblioteka klas .NET Framework. Model programowania interfejsu API konfiguracji pomaga zapewnić spójność i niezawodność kodu przez wymuszanie typów danych w czasie kompilacji. Aby ułatwić zarządzanie konfiguracjami aplikacji, interfejs API konfiguracji umożliwia wyświetlanie danych scalonych ze wszystkich punktów w hierarchii konfiguracji jako pojedynczej kolekcji zamiast wyświetlania danych jako osobnych kolekcji z różnych plików konfiguracji. Ponadto interfejs API konfiguracji umożliwia manipulowanie całą konfiguracją aplikacji bez bezpośredniego edytowania kodu XML w plikach konfiguracji. Na koniec interfejs API upraszcza zadania konfiguracyjne, obsługując narzędzia administracyjne, takie jak narzędzie do administrowania witrynami sieci Web. Interfejs API konfiguracji upraszcza wdrażanie, obsługując tworzenie plików konfiguracji na komputerze i uruchamianie skryptów konfiguracji na wielu komputerach.

Uwaga

Interfejs API konfiguracji nie obsługuje tworzenia aplikacji usług IIS.

Praca z ustawieniami konfiguracji lokalnej i zdalnej

Obiekt Konfiguracji reprezentuje scalony widok ustawień konfiguracji, które mają zastosowanie do określonej jednostki fizycznej, takiej jak komputer, lub do jednostki logicznej, takiej jak aplikacja lub witryna sieci Web. Określona jednostka logiczna może istnieć na komputerze lokalnym lub na serwerze zdalnym. Jeśli dla określonej jednostki nie istnieje plik konfiguracji, obiekt Configuration reprezentuje domyślne ustawienia konfiguracji zdefiniowane przez plik Machine.config.

Obiekt Configuration można uzyskać przy użyciu jednej z otwartych metod konfiguracji z następujących klas:

  1. Klasa ConfigurationManager, jeśli jednostka jest aplikacją kliencką.
  2. Klasa WebConfigurationManager, jeśli twoja jednostka jest aplikacją internetową.

Te metody zwracają obiekt Konfiguracji, który z kolei udostępnia wymagane metody i właściwości do obsługi podstawowych plików konfiguracji. Dostęp do tych plików można uzyskać do odczytu lub zapisu.

Odczytywanie

Aby odczytać informacje o konfiguracji, należy użyć metody GetSection lub GetSectionGroup. Użytkownik lub proces odczytu musi mieć uprawnienia do odczytu dla wszystkich plików konfiguracji w hierarchii.

Uwaga

Jeśli używasz statycznej metody GetSection, która przyjmuje parametr path, parametr path musi odwoływać się do aplikacji, w której działa kod. W przeciwnym razie parametr jest ignorowany i zwracane są informacje o konfiguracji aktualnie uruchomionej aplikacji.

Zapisywanie

Aby zapisać informacje o konfiguracji, należy użyć jednej z metod Zapisywania. Użytkownik lub proces, który zapisuje, musi mieć uprawnienia do zapisu w pliku konfiguracji i katalogu na bieżącym poziomie hierarchii konfiguracji, a także uprawnienia do odczytu na wszystkich plikach konfiguracji w hierarchii.

Aby wygenerować plik konfiguracji reprezentujący dziedziczone ustawienia konfiguracji dla określonej jednostki, użyj jednej z następujących metod zapisywania konfiguracji:

  1. Metoda Save w celu utworzenia nowego pliku konfiguracji.
  2. Metoda SaveAs w celu wygenerowania nowego pliku konfiguracji w innej lokalizacji.

Klasy konfiguracji i przestrzenie nazw

Wiele klas konfiguracji i metod jest podobnych do siebie. W poniższej tabeli opisano najczęściej używane klasy konfiguracji i przestrzenie nazw.

Klasa konfiguracji lub przestrzeń nazw Opis
Przestrzeń nazw System.Configuration Zawiera główne klasy konfiguracji dla wszystkich aplikacji .NET Framework. Klasy procedury obsługi sekcji służą do uzyskiwania danych konfiguracji dla sekcji z metod, takich jak GetSection i GetSectionGroup. Te dwie metody są niestatyczne.
System.Configuration.Configuration, klasa Reprezentuje zestaw danych konfiguracji dla komputera, aplikacji, katalogu sieci Web lub innego zasobu. Ta klasa zawiera przydatne metody, takie jak GetSection i GetSectionGroup, do aktualizowania ustawień konfiguracji i uzyskiwania odwołań do sekcji i grup sekcji. Ta klasa jest używana jako typ zwracany dla metod, które uzyskują dane konfiguracji czasu projektowania, takie jak metody klas WebConfigurationManager i ConfigurationManager.
Przestrzeń nazw System.Web.Configuration Zawiera klasy procedury obsługi sekcji dla sekcji ASP.NET sekcji konfiguracji zdefiniowanych w ASP.NET Ustawienia konfiguracji. Klasy procedury obsługi sekcji służą do uzyskiwania danych konfiguracji dla sekcji z metod, takich jak GetSection i GetSectionGroup.
System.Web.Configuration.WebConfigurationManager, klasa Udostępnia przydatne metody uzyskiwania odwołań do ustawień konfiguracji czasu wykonywania i czasu projektowania. Te metody używają klasy System.Configuration.Configuration jako zwracanego typu. Możesz użyć statycznej metody GetSection tej klasy lub niestatycznej metody GetSection klasy System.Configuration.ConfigurationManager zamiennie. W przypadku konfiguracji aplikacji sieci Web zalecana jest klasa System.Web.Configuration.WebConfigurationManager zamiast klasy System.Configuration.ConfigurationManager.
Przestrzeń nazw System.Configuration.Provider Zapewnia sposób dostosowywania i rozszerzania dostawcy konfiguracji. Jest to klasa bazowa dla wszystkich klas dostawców w systemie konfiguracji.
Przestrzeń nazw System.Web.Management Zawiera klasy i interfejsy do zarządzania kondycją aplikacji internetowych i monitorowania ich. Ściśle rzecz biorąc, ta przestrzeń nazw nie jest uznawana za część interfejsu API konfiguracji. Na przykład śledzenie i wypalanie zdarzeń odbywa się przez klasy w tej przestrzeni nazw.
Przestrzeń nazw System.Management.Instrumentation Udostępnia klasy niezbędne do instrumentacji aplikacji w celu uwidaczniania informacji i zdarzeń zarządzania za pośrednictwem instrumentacji zarządzania Windows (WMI) dla potencjalnych użytkowników. ASP.NET monitorowanie kondycji używa usługi WMI do dostarczania zdarzeń. Ściśle rzecz biorąc, ta przestrzeń nazw nie jest uznawana za część interfejsu API konfiguracji.

Odczytywanie z plików konfiguracji ASP.NET

Klasa WebConfigurationManager jest podstawową klasą do odczytywania z plików konfiguracji ASP.NET. Odczytywanie plików konfiguracji ASP.NET jest zasadniczo trzy kroki:

  1. Pobierz obiekt Configuration przy użyciu metody OpenWebConfiguration.
  2. Pobierz odwołanie do żądanej sekcji w pliku konfiguracji.
  3. Odczytaj żądane informacje z pliku konfiguracji.

Obiekt Configuration reprezentuje nie reprezentuje określonego pliku konfiguracji. Zamiast tego reprezentuje scalony widok konfiguracji komputera, aplikacji lub witryny sieci Web. Poniższy przykładowy kod tworzy wystąpienie obiektu Configuration reprezentującego konfigurację aplikacji internetowej o nazwie ProductInfo.

Configuration config = WebConfigurationManager.OpenWebConfiguration("/ProductInfo);

Uwaga

Należy pamiętać, że jeśli ścieżka /ProductInfo nie istnieje, powyższy kod zwróci domyślną konfigurację, jak określono w pliku machine.config.

Po utworzeniu obiektu Configuration możesz przejść do szczegółów ustawień konfiguracji za pomocą metody GetSection lub GetSectionGroup. Poniższy przykład pobiera odwołanie do ustawień personifikacji dla powyższej aplikacji ProductInfo:

Configuration config =
    WebConfigurationManager.OpenWebConfiguration("/ProductInfo);
IdentitySection section =
   (IdentitySection)config.GetSection("system.web/identity");

Zapisywanie w plikach konfiguracji ASP.NET

Podobnie jak w przypadku odczytu z plików konfiguracji, klasa WebConfigurationManager jest rdzeniem do zapisywania w plikach konfiguracji Asp.NET. Istnieją również trzy kroki zapisywania w plikach konfiguracji ASP.NET.

  1. Pobierz obiekt Configuration przy użyciu metody OpenWebConfiguration.
  2. Pobierz odwołanie do żądanej sekcji w pliku konfiguracji.
  3. Zapisz żądane informacje z pliku konfiguracji przy użyciu metody Save lub SaveAs.

Poniższy kod zmienia atrybut <debugowania elementu kompilacji> 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!");
}

Po wykonaniu tego kodu atrybut <debugowania elementu kompilacji> zostanie ustawiony na wartość false dla pliku web.config aplikacji internetowej.

Przestrzeń nazw System.Web.Management

Przestrzeń nazw System.Web.Management udostępnia klasy i interfejsy do zarządzania kondycją aplikacji ASP.NET i monitorowania ich kondycji.

Rejestrowanie jest realizowane przez zdefiniowanie reguły, która kojarzy zdarzenia z dostawcą. Reguła definiuje typ zdarzeń wysyłanych do dostawcy. Do rejestrowania są dostępne następujące zdarzenia podstawowe:

Webbaseevent Klasa zdarzeń podstawowych dla wszystkich zdarzeń. Zawiera wymagane właściwości dla wszystkich zdarzeń, takich jak kod zdarzenia, kod szczegółów zdarzenia, data i godzina zgłoszenia zdarzenia, numer sekwencji, komunikat zdarzenia i szczegóły zdarzenia.
Webmanagementevent Klasa zdarzeń podstawowych dla zdarzeń zarządzania, takich jak okres istnienia aplikacji, żądanie, błąd i zdarzenia inspekcji.
WebHeartbeatEvent Zdarzenie generowane przez aplikację w regularnych odstępach czasu w celu przechwycenia przydatnych informacji o stanie środowiska uruchomieniowego.
Webauditevent Klasa bazowa zdarzeń inspekcji zabezpieczeń, które są używane do oznaczania warunków, takich jak niepowodzenie autoryzacji, niepowodzenie odszyfrowywania itp.
WebRequestEvent Klasa bazowa dla wszystkich zdarzeń żądania informacyjnego.
Webbaseerrorevent Klasa bazowa dla wszystkich zdarzeń wskazujących warunki błędu.

Dostępne typy dostawców umożliwiają wysyłanie danych wyjściowych zdarzeń do Podgląd zdarzeń, SQL Server, Instrumentacji zarządzania Windows (WMI) i poczty e-mail. Wstępnie skonfigurowani dostawcy i mapowania zdarzeń zmniejszają ilość pracy niezbędnej do uzyskania zarejestrowanych danych wyjściowych zdarzenia.

ASP.NET 2.0 używa gotowego dostawcy dziennika zdarzeń do rejestrowania zdarzeń na podstawie domen aplikacji, które są uruchamiane i zatrzymywane, a także rejestrowania nieobsługiwane wyjątki. Pomaga to uwzględnić niektóre z podstawowych scenariuszy. Załóżmy na przykład, że aplikacja zgłasza wyjątek, ale użytkownik nie zapisuje błędu i nie można go odtworzyć. Dzięki domyślnej regule dziennika zdarzeń można zebrać informacje o wyjątku i stosie, aby lepiej zrozumieć, jakiego rodzaju błąd wystąpił. Inny przykład ma zastosowanie, jeśli aplikacja traci stan sesji. W takim przypadku możesz zajrzeć do dziennika zdarzeń, aby określić, czy domena aplikacji jest przetwarzana, i dlaczego domena aplikacji została zatrzymana w pierwszej kolejności.

Ponadto system monitorowania kondycji jest rozszerzalny. Można na przykład zdefiniować niestandardowe zdarzenia sieci Web, uruchomić je w aplikacji, a następnie zdefiniować regułę wysyłania informacji o zdarzeniu do dostawcy, takiego jak adres e-mail. Dzięki temu można łatwo powiązać instrumentację z dostawcami monitorowania kondycji. W innym przykładzie można uruchomić zdarzenie za każdym razem, gdy zamówienie jest przetwarzane i skonfigurować regułę, która wysyła każde zdarzenie do bazy danych SQL Server. Można również uruchomić zdarzenie, gdy użytkownik nie może zalogować się wiele razy z rzędu i skonfigurować zdarzenie do korzystania z dostawców opartych na wiadomościach e-mail.

Konfiguracja domyślnych dostawców i zdarzeń jest przechowywana w globalnym pliku Web.config. Plik globalny Web.config przechowuje wszystkie ustawienia oparte na sieci Web, które były przechowywane w pliku Machine.config w ASP.NET 1x. Globalny plik Web.config znajduje się w następującym katalogu:

%windir%\Microsoft.Net\Framework\v2.0.*\config\Web.config

Sekcja <healthMonitoring> pliku globalnego Web.config zawiera domyślne ustawienia konfiguracji. Możesz zastąpić to ustawienie lub skonfigurować własne ustawienia, implementując sekcję <healthMonitoring> w pliku Web.config dla aplikacji.

Sekcja <healthMonitoring> pliku Web.config globalnego zawiera następujące elementy:

Dostawców Zawiera dostawców skonfigurowanych dla Podgląd zdarzeń, WMI i SQL Server.
Eventmappings Zawiera mapowania dla różnych klas bazy danych WebBase. Tę listę można rozszerzyć, jeśli wygenerujesz własną klasę zdarzeń. Generowanie własnej klasy zdarzeń zapewnia dokładnszy stopień szczegółowości dla dostawców, do których wysyłasz informacje. Na przykład można skonfigurować nieobsługiwane wyjątki do wysyłania do SQL Server podczas wysyłania własnych zdarzeń niestandardowych do poczty e-mail.
Zasady Łączy element eventMappings z dostawcą.
Buforowanie Używany z SQL Server i dostawców poczty e-mail do określania, jak często opróżniać zdarzenia do dostawcy.

Poniżej znajduje się przykładowy kod z globalnego pliku 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>

Jak przechowywać zdarzenia do Podgląd zdarzeń

Jak wspomniano wcześniej, dostawca do rejestrowania zdarzeń w Podgląd zdarzeń jest skonfigurowany dla Ciebie w pliku Web.config globalnej. Domyślnie wszystkie zdarzenia oparte na webBaseErrorEvent i WebFailureAuditEvent są rejestrowane. Możesz dodać dodatkowe reguły, aby rejestrować dodatkowe informacje w dzienniku zdarzeń. Jeśli na przykład chcesz rejestrować wszystkie zdarzenia (tj. każde zdarzenie na podstawie webBaseEvent), możesz dodać następującą regułę do pliku Web.config:

<healthMonitoring>
    <rules>
        <add name="All Events" eventName="All Events"
             provider="EventLogProvider" profile="Critical" />
    </rules>
</healthMonitoring>

Ta reguła łączy mapę zdarzeń Wszystkie zdarzenia z dostawcą dziennika zdarzeń. Zarówno eventMapping, jak i dostawca są uwzględnione w pliku globalnej Web.config.

Jak przechowywać zdarzenia do SQL Server

Ta metoda używa bazy danych ASPNETDB , która jest generowana przez narzędzie Aspnet_regsql.exe. Domyślny dostawca używa parametrów połączenia LocalSqlServer, które używają bazy danych opartej na plikach w folderze App_data lub lokalnego wystąpienia SQLExpress SQL Server. Parametry połączenia LocalSqlServer i SqlProvider są konfigurowane w pliku globalnej Web.config.

Parametry połączenia LocalSqlServer w pliku globalnej Web.config wyglądają następująco:

<connectionStrings>
    <add name="LocalSqlServer"
         connectionString="data source=.\SQLEXPRESS;
         Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;
         User Instance=true"
         providerName="System.Data.SqlClient" />
</connectionStrings>

Jeśli chcesz użyć innego wystąpienia SQL Server, musisz użyć narzędzia Aspnet_regsql.exe, które można znaleźć w folderze %windir%\Microsoft.Net\Framework\v2.0.*. Użyj narzędzia Aspnet_regsql.exe, aby wygenerować niestandardową bazę danych ASPNETDB w wystąpieniu SQL Server, a następnie dodać parametry połączenia do pliku konfiguracji aplikacji, a następnie dodać dostawcę przy użyciu nowych parametrów połączenia. Po utworzeniu bazy danych ASPNETDB należy ustawić regułę, aby połączyć element eventMapping z obiektem sqlProvider.

Niezależnie od tego, czy używasz domyślnego dostawcy SqlProvider, czy konfigurujesz własnego dostawcę, musisz dodać regułę łączącą dostawcę z mapą zdarzeń. Poniższa reguła łączy nowego dostawcę utworzonego powyżej z mapą zdarzeń Wszystkie zdarzenia . Ta reguła będzie rejestrować wszystkie zdarzenia na podstawie elementu WebBaseEvent i wysyłać je do dostawcy MySqlWebEventProvider, który będzie używać parametrów połączenia MYASPNETDB. Poniższy kod dodaje regułę w celu połączenia dostawcy z mapą zdarzeń:

<healthMonitoring>
    <rules>
        <add name="All Events" eventName="All Events"
        provider="MySqlWebEventProvider" profile="Critical"/>
    </rules>
</healthMonitoring>

Jeśli chcesz wysyłać tylko błędy do SQL Server, możesz dodać następującą regułę:

<add name="All Errors"
    eventName="All Errors"
    provider="MySqlWebEventProvider"
    profile="Critical"/>

Jak przekazywać zdarzenia do usługi WMI

Zdarzenia można również przekazywać do usługi WMI. Dostawca WMI jest domyślnie skonfigurowany dla Użytkownika w pliku Web.config globalnej.

Poniższy przykład kodu dodaje regułę do przekazywania zdarzeń do usługi WMI:

<providers>
    <add name="WmiWebEventProvider"
      type="System.Web.Management.WmiWebEventProvider,System.Web,
         Version=2.0.0.0,Culture=neutral,
         PublicKeyToken=b03f5f7f11d50a3a" />
</providers>

Należy dodać regułę, aby skojarzyć element eventMapping z dostawcą, a także aplikację odbiornika usługi WMI do nasłuchiwania zdarzeń. Poniższy przykład kodu dodaje regułę w celu połączenia dostawcy usługi WMI z mapą zdarzeń Wszystkie zdarzenia :

<rules>
    <add name="All Events"
      eventName="All Events" provider="WmiWebEventProvider"
        profile="Critical" />
</rules>

Jak przekazywać zdarzenia pocztą e-mail

Możesz również przekazywać zdarzenia pocztą e-mail. Należy zachować ostrożność podczas mapowania reguł zdarzeń na dostawcę poczty e-mail, ponieważ przypadkowo możesz wysłać sobie wiele informacji, które mogą być lepiej dostosowane do SQL Server lub dziennika zdarzeń. Istnieją dwa dostawcy poczty e-mail; SimpleMailWebEventProvider i TemplatedMailWebEventProvider. Każdy z nich ma te same atrybuty konfiguracji, z wyjątkiem atrybutów "template" i "detailedTemplateErrors", które są dostępne tylko w templatedMailWebEventProvider.

Uwaga

Żaden z tych dostawców poczty e-mail nie jest skonfigurowany dla Ciebie. Musisz dodać je do pliku Web.config.

Główną różnicą między tymi dwoma dostawcami poczty e-mail jest to, że SimpleMailWebEventProvider wysyła wiadomości e-mail w szablonie ogólnym, którego nie można modyfikować. Przykładowy plik Web.config dodaje tego dostawcę poczty e-mail do listy skonfigurowanych dostawców przy użyciu następującej reguły:

<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"/>

Poniższa reguła jest również dodawana do wiązania dostawcy poczty e-mail z mapą zdarzeń Wszystkie zdarzenia :

<add name="All Events" eventName="All Events"
    provider="mySimple-mailWebEventProvider" profile="Critical"/>

śledzenie ASP.NET 2.0

Istnieją trzy główne ulepszenia śledzenia w ASP.NET 2.0.

  1. Zintegrowane funkcje śledzenia
  2. Programowy dostęp do komunikatów śledzenia
  3. Ulepszone śledzenie na poziomie aplikacji

Funkcje śledzenia zintegrowanego

Teraz można kierować komunikaty emitowane przez klasę System.Diagnostics.Trace do ASP.NET danych wyjściowych śledzenia i kierować komunikaty emitowane przez śledzenie ASP.NET do elementu System.Diagnostics.Trace. Można również przekazywać zdarzenia instrumentacji ASP.NET do elementu System.Diagnostics.Trace. Ta funkcja jest dostarczana przez nowy atrybut <writeToDiagnosticsTrace elementu śledzenia>. Jeśli ta wartość logiczna jest prawdziwa, ASP.NET komunikaty śledzenia są przekazywane do infrastruktury śledzenia System.Diagnostics do użycia przez wszystkie odbiorniki zarejestrowane w celu wyświetlenia komunikatów śledzenia.

Programowy dostęp do komunikatów śledzenia

ASP.NET 2.0 umożliwia programowy dostęp do wszystkich komunikatów śledzenia za pośrednictwem klasy TraceContextRecord i kolekcji TraceRecords . Najbardziej wydajnym sposobem uzyskiwania dostępu do komunikatów śledzenia jest zarejestrowanie delegata TraceContextEventHandler (również nowego w ASP.NET 2.0) w celu obsługi nowego zdarzenia TraceFinished . Następnie możesz pętli przez komunikaty śledzenia zgodnie z życzeniami.

Poniższy przykładowy kod ilustruje to:

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));
    }
}

W powyższym przykładzie przejdę pętlę do kolekcji TraceRecords, a następnie napiszę każdy komunikat do strumienia Odpowiedzi.

Ulepszone śledzenie Application-Level

Śledzenie na poziomie aplikacji zostało ulepszone dzięki wprowadzeniu nowego atrybutu <mostRecent elementu śledzenia>. Ten atrybut określa, czy są wyświetlane najnowsze dane wyjściowe śledzenia na poziomie aplikacji, a starsze dane śledzenia wykraczające poza limity wskazane przez requestLimit są odrzucane. Jeśli wartość false, dane śledzenia są wyświetlane dla żądań do momentu osiągnięcia atrybutu requestLimit.

narzędzia wiersza polecenia ASP.NET

Istnieje kilka narzędzi wiersza polecenia, które ułatwiają konfigurację ASP.NET. ASP.NET deweloperzy powinni zapoznać się z narzędziem aspnet_regiis.exe. ASP.NET 2.0 udostępnia trzy inne narzędzia wiersza polecenia ułatwiające konfigurację.

Dostępne są następujące narzędzia wiersza polecenia:

Narzędzie Zastosowanie
aspnet_regiis.exe Umożliwia rejestrację ASP.NET za pomocą usług IIS. Istnieją dwie wersje tych narzędzi, które są dostarczane z ASP.NET 2.0, jeden dla systemów 32-bitowych (w folderze Framework) i jeden dla systemów 64-bitowych (w folderze Framework64). Wersja 64-bitowa nie zostanie zainstalowana w 32-bitowym systemie operacyjnym.
aspnet_regsql.exe Narzędzie rejestracji ASP.NET SQL Server służy do tworzenia bazy danych microsoft SQL Server do użycia przez dostawców SQL Server w ASP.NET lub do dodawania lub usuwania opcji z istniejącej bazy danych. Plik Aspnet_regsql.exe znajduje się w folderze [drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber na serwerze sieci Web.
aspnet_regbrowsers.exe Narzędzie rejestracji przeglądarki ASP.NET analizuje i kompiluje wszystkie definicje przeglądarki dla całego systemu w zestawie i instaluje zestaw w globalnej pamięci podręcznej zestawów. Narzędzie używa plików definicji przeglądarki (. Pliki BROWSER) z podkatalogu przeglądarki .NET Framework. Narzędzie można znaleźć w katalogu %SystemRoot%\Microsoft.NET\Framework\version\.
aspnet_compiler.exe Narzędzie ASP.NET Kompilacja umożliwia skompilowanie aplikacji internetowej ASP.NET w miejscu lub do wdrożenia w lokalizacji docelowej, takiej jak serwer produkcyjny. Kompilacja w miejscu pomaga w wydajności aplikacji, ponieważ użytkownicy końcowi nie napotykają opóźnienia w pierwszym żądaniu aplikacji podczas kompilowania aplikacji.

Ponieważ narzędzie aspnet_regiis.exe nie jest nowym narzędziem do ASP.NET 2.0, nie omówimy go tutaj.

narzędzie rejestracji ASP.NET SQL Server — aspnet_regsql.exe

Można ustawić kilka typów opcji przy użyciu narzędzia rejestracji ASP.NET SQL Server. Można określić połączenie SQL, określić, które usługi aplikacji ASP.NET używają SQL Server do zarządzania informacjami, wskazać, która baza danych lub tabela jest używana do zależności pamięci podręcznej SQL, oraz dodać lub usunąć obsługę używania SQL Server do przechowywania procedur i stanu sesji.

Kilka usług aplikacji ASP.NET polega na dostawcy do zarządzania przechowywaniem i pobieraniem danych ze źródła danych. Każdy dostawca jest specyficzny dla źródła danych. ASP.NET zawiera dostawcę SQL Server dla następujących funkcji ASP.NET:

Podczas instalowania ASP.NET plik Machine.config serwera zawiera elementy konfiguracji, które określają dostawców SQL Server dla każdego z funkcji ASP.NET, które opierają się na dostawcy. Ci dostawcy są domyślnie konfigurowani w celu nawiązania połączenia z wystąpieniem użytkownika lokalnego SQL Server Express 2005. Jeśli zmienisz domyślne parametry połączenia używane przez dostawców, zanim będzie można użyć dowolnego z funkcji ASP.NET skonfigurowanych w konfiguracji maszyny, musisz zainstalować bazę danych SQL Server i elementy bazy danych dla wybranej funkcji przy użyciu Aspnet_regsql.exe. Jeśli baza danych określona za pomocą narzędzia rejestracji SQL jeszcze nie istnieje (aspnetdb będzie domyślną bazą danych, jeśli nie określono jej w wierszu polecenia), bieżący użytkownik musi mieć uprawnienia do tworzenia baz danych w SQL Server, a także do tworzenia elementów schematu w bazie danych.

Zależność pamięci podręcznej SQL

Zaawansowaną funkcją buforowania danych wyjściowych ASP.NET jest zależność pamięci podręcznej SQL. Zależność pamięci podręcznej SQL obsługuje dwa różne tryby działania: jeden, który używa ASP.NET implementacji sondowania tabel i drugiego trybu, który korzysta z funkcji powiadomień zapytania SQL Server 2005. Narzędzie rejestracji SQL może służyć do konfigurowania trybu sondowania tabeli operacji.

Stan sesji

Domyślnie wartości stanu sesji i informacje są przechowywane w pamięci w procesie ASP.NET. Alternatywnie można przechowywać dane sesji w bazie danych SQL Server, gdzie mogą być współużytkowane przez wiele serwerów sieci Web. Jeśli baza danych określona dla stanu sesji za pomocą narzędzia rejestracji SQL nie istnieje, bieżący użytkownik musi mieć uprawnienia do tworzenia baz danych w SQL Server, a także do tworzenia elementów schematu w bazie danych. Jeśli baza danych istnieje, bieżący użytkownik musi mieć uprawnienia do tworzenia elementów schematu w istniejącej bazie danych.

Aby zainstalować bazę danych stanu sesji na SQL Server, uruchom narzędzie Aspnet_regsql.exe i podaj następujące informacje za pomocą polecenia :

  • Nazwa wystąpienia SQL Server przy użyciu opcji -S.
  • Poświadczenia logowania dla konta z uprawnieniami do tworzenia bazy danych na komputerze z systemem SQL Server. Użyj opcji -E , aby użyć aktualnie zalogowanego użytkownika lub użyj opcji -U , aby określić identyfikator użytkownika wraz z opcją -P , aby określić hasło.
  • Opcja -ssadd wiersza polecenia, aby dodać bazę danych stanu sesji.

Domyślnie nie można użyć narzędzia Aspnet_regsql.exe do zainstalowania bazy danych stanu sesji na komputerze z systemem SQL Server 2005 Express Edition.

Narzędzie rejestracji przeglądarki ASP.NET — aspnet_regbrowsers.exe

W ASP.NET wersji 1.1 plik Machine.config zawierał sekcję o nazwie <browserCaps>. W tej sekcji zawarto serię wpisów XML, które zdefiniowały konfiguracje dla różnych przeglądarek na podstawie wyrażenia regularnego. W przypadku ASP.NET w wersji 2.0 nowa . Plik BROWSER definiuje parametry określonej przeglądarki przy użyciu wpisów XML. Informacje o nowej przeglądarce można dodać przez dodanie nowego elementu . Plik BROWSER do folderu znajdującego się w folderze %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browser w systemie.

Ponieważ aplikacja nie odczytuje pliku .config za każdym razem, gdy wymaga informacji o przeglądarce, możesz utworzyć nowy plik . Plik BROWSER i uruchom Aspnet_regbrowsers.exe, aby dodać wymagane zmiany do zestawu. Dzięki temu serwer może natychmiast uzyskać dostęp do nowych informacji przeglądarki, dzięki czemu nie trzeba zamykać żadnych aplikacji w celu pobrania informacji. Aplikacja może uzyskiwać dostęp do funkcji przeglądarki za pośrednictwem właściwości Browser bieżącego obiektu HttpRequest.

Podczas uruchamiania aspnet_regbrowser.exe są dostępne następujące opcje:

Opcja Opis
-? Wyświetla Aspnet_regbbrowsers.exe tekst Pomocy w oknie polecenia.
-i Tworzy zestaw funkcji przeglądarki uruchomieniowej i instaluje go w globalnej pamięci podręcznej zestawów.
-U Odinstalowuje zestaw funkcji przeglądarki uruchomieniowej z globalnej pamięci podręcznej zestawów.

Narzędzie do kompilacji ASP.NET — aspnet_compiler.exe

Narzędzie ASP.NET Kompilacja może być używane na dwa ogólne sposoby: w przypadku kompilacji i kompilacji w miejscu do wdrożenia, gdzie określono docelowy katalog wyjściowy.

Kompilowanie aplikacji w miejscu

Narzędzie ASP.NET Kompilacja może skompilować aplikację, czyli naśladuje zachowanie wykonywania wielu żądań do aplikacji, co powoduje regularną kompilację. Użytkownicy wstępnie skompilowanej witryny nie będą doświadczać opóźnienia spowodowanego kompilowaniem strony na pierwszym żądaniu.

W przypadku prekompiluj lokację obowiązują następujące elementy:

  • Witryna zachowuje jego pliki i strukturę katalogów.
  • Musisz mieć kompilatory dla wszystkich języków programowania używanych przez lokację na serwerze.
  • Jeśli jakakolwiek kompilacja pliku zakończy się niepowodzeniem, kompilacja całej witryny zakończy się niepowodzeniem.

Możesz również ponownie skompilować aplikację po dodaniu do niej nowych plików źródłowych. Narzędzie kompiluje tylko nowe lub zmienione pliki, chyba że dołączysz opcję -c .

Uwaga

Kompilacja aplikacji zawierającej aplikację zagnieżdżona nie kompiluje zagnieżdżonej aplikacji. Zagnieżdżona aplikacja musi być skompilowana oddzielnie.

Kompilowanie aplikacji do wdrożenia

Skompilujesz aplikację do wdrożenia (kompilację do lokalizacji docelowej), określając parametr targetDir. TargetDir może być końcową lokalizacją aplikacji sieci Web lub skompilowaną aplikację można dalej wdrożyć. Użycie opcji -u kompiluje aplikację w taki sposób, aby można było wprowadzać zmiany w niektórych plikach w skompilowanej aplikacji bez ponownego kompilowania. Aspnet_compiler.exe rozróżnia statyczne i dynamiczne typy plików i obsługuje je inaczej podczas tworzenia wynikowej aplikacji.

  • Statyczne typy plików to te, które nie mają skojarzonego kompilatora lub dostawcy kompilacji, takie jak pliki, których nazwy mają rozszerzenia, takie jak .css, .gif, .htm, .html, .jpg, .js itd. Te pliki są po prostu kopiowane do lokalizacji docelowej, a ich względne miejsca w strukturze katalogów są zachowywane.
  • Dynamiczne typy plików to te, które mają skojarzony kompilator lub dostawcę kompilacji, w tym pliki z rozszerzeniami nazw plików specyficznych dla ASP.NET, takimi jak .asax, .ascx, .ashx, .aspx, .browser, .master itd. Narzędzie do kompilacji ASP.NET generuje zestawy z tych plików. Jeśli opcja -u zostanie pominięta, narzędzie tworzy również pliki z rozszerzeniem nazwy pliku . Skompilowane mapowanie oryginalnych plików źródłowych na zestaw. Aby upewnić się, że struktura katalogów źródła aplikacji jest zachowywana, narzędzie generuje pliki zastępcze w odpowiednich lokalizacjach w aplikacji docelowej.

Należy użyć opcji -u , aby wskazać, że można zmodyfikować zawartość skompilowanej aplikacji. W przeciwnym razie kolejne modyfikacje są ignorowane lub powodują błędy czasu wykonywania.

W poniższej tabeli opisano, jak narzędzie do kompilacji ASP.NET obsługuje różne typy plików po dołączeniu opcji -u .

Typ pliku Akcja kompilatora
.ascx, .aspx, .master Te pliki są podzielone na znaczniki i kod źródłowy, który zawiera pliki za kodem i dowolny kod, który jest ujęta w <elementy runat="server".> Kod źródłowy jest kompilowany do zestawów z nazwami pochodzącymi z algorytmu tworzenia skrótów, a zestawy są umieszczane w katalogu Bin. Każdy kod wbudowany, czyli kod zawarty między nawiasami <% i %> , jest dołączony do znaczników, a nie skompilowany. Nowe pliki o takiej samej nazwie jak pliki źródłowe są tworzone w celu przechowywania znaczników i umieszczania ich w odpowiednich katalogach wyjściowych.
.ashx, .asmx Te pliki nie są kompilowane i są przenoszone do katalogów wyjściowych, ponieważ nie są kompilowane. Jeśli chcesz skompilować kod programu obsługi, umieść kod w plikach kodu źródłowego w katalogu App_Code.
.cs, .vb, .jsl, .cpp (nie obejmuje plików za kodem dla wymienionych wcześniej typów plików) Te pliki są kompilowane i dołączane jako zasób w zestawach odwołujących się do nich. Pliki źródłowe nie są kopiowane do katalogu wyjściowego. Jeśli plik kodu nie jest przywołyny, nie jest kompilowany.
Niestandardowe typy plików Te pliki nie są kompilowane. Te pliki są kopiowane do odpowiednich katalogów wyjściowych.
Pliki kodu źródłowego w podkatalogu App_Code Te pliki są kompilowane do zestawów i umieszczane w katalogu Bin.
Pliki resx i resource w podkatalogu App_GlobalResources Te pliki są kompilowane do zestawów i umieszczane w katalogu Bin. Żaden podkatalog App_GlobalResources nie jest tworzony w głównym katalogu wyjściowym, a żadne pliki resx ani resources znajdujące się w katalogu źródłowym nie są kopiowane do katalogów wyjściowych.
Pliki resx i resource w podkatalogu App_LocalResources Te pliki nie są kompilowane i są kopiowane do odpowiednich katalogów wyjściowych.
Pliki skin w podkatalogu App_Themes Pliki skórne i pliki statycznych motywów nie są kompilowane i są kopiowane do odpowiednich katalogów wyjściowych.
.browser Web.config zestawy plików statycznych już obecne w katalogu Bin Te pliki są kopiowane zgodnie z instrukcjami do katalogów wyjściowych.

W poniższej tabeli opisano, jak narzędzie do kompilacji ASP.NET obsługuje różne typy plików, gdy opcja -u zostanie pominięta.

Typ pliku Akcja kompilatora
.aspx, .asmx, .ashx, .master Te pliki są podzielone na znaczniki i kod źródłowy, który zawiera pliki za kodem i dowolny kod, który jest ujęta w <elementy runat="server".> Kod źródłowy jest kompilowany do zestawów z nazwami pochodzącymi z algorytmu tworzenia skrótów. Wynikowe zestawy są umieszczane w katalogu Bin. Każdy kod wbudowany, czyli kod zawarty między nawiasami <% i %> , jest dołączony do znaczników, a nie skompilowany. Kompilator tworzy nowe pliki zawierające znaczniki o tej samej nazwie co pliki źródłowe. Te pliki wynikowe są umieszczane w katalogu Bin. Kompilator tworzy również pliki o tej samej nazwie co pliki źródłowe, ale z rozszerzeniem . SKOMPILOWANY, który zawiera informacje o mapowaniu. Tthe. Skompilowane pliki są umieszczane w katalogach wyjściowych odpowiadających oryginalnej lokalizacji plików źródłowych.
.ascx Te pliki są podzielone na znaczniki i kod źródłowy. Kod źródłowy jest kompilowany do zestawów i umieszczany w katalogu Bin z nazwami pochodzącymi z algorytmu tworzenia skrótów. Nie są generowane żadne pliki znaczników.
.cs, .vb, .jsl, .cpp (nie obejmuje plików za kodem dla wymienionych wcześniej typów plików) Kod źródłowy, do którego odwołuje się zestawy wygenerowane na podstawie plików ascx, ashx lub aspx, jest kompilowany do zestawów i umieszczany w katalogu Bin. Żadne pliki źródłowe nie są kopiowane.
Niestandardowe typy plików Te pliki są kompilowane jak pliki dynamiczne. W zależności od typu pliku, na podstawie którego są oparte, kompilator może umieszczać pliki mapowania w katalogach wyjściowych.
Pliki w podkatalogu App_Code Pliki kodu źródłowego w tym podkatalogu są kompilowane do zestawów i umieszczane w katalogu Bin.
Pliki w podkatalogu App_GlobalResources Te pliki są kompilowane do zestawów i umieszczane w katalogu Bin. W głównym katalogu wyjściowym nie jest tworzony żaden podkatalog App_GlobalResources. Jeśli plik konfiguracji określa wartość appliesTo="All", pliki resx i resources są kopiowane do katalogów wyjściowych. Nie są kopiowane, jeśli są przywoływane przez dostawcę kompilacji.
Pliki resx i resource w podkatalogu App_LocalResources Te pliki są kompilowane w zestawy o unikatowych nazwach i umieszczane w katalogu Bin. Żadne pliki resx ani resource nie są kopiowane do katalogów wyjściowych.
Pliki skin w podkatalogu App_Themes Motywy są kompilowane do zestawów i umieszczane w katalogu Bin. Pliki wycinka są tworzone dla plików skórnych i umieszczane w odpowiednim katalogu wyjściowym. Pliki statyczne (takie jak css) są kopiowane do katalogów wyjściowych.
.browser Web.config zestawy plików statycznych już obecne w katalogu Bin Te pliki są kopiowane zgodnie z instrukcjami do katalogu wyjściowego.

Stałe nazwy zestawów

Niektóre scenariusze, takie jak wdrażanie aplikacji internetowej przy użyciu Instalatora Windows MSI, wymagają użycia spójnych nazw plików i zawartości, a także spójnych struktur katalogów w celu identyfikowania zestawów lub ustawień konfiguracji aktualizacji. W takich przypadkach można użyć opcji -fixednames , aby określić, że narzędzie kompilacji ASP.NET powinno skompilować zestaw dla każdego pliku źródłowego zamiast używać miejsca, w którym wiele stron jest kompilowanych do zestawów. Może to prowadzić do dużej liczby zestawów, więc jeśli interesuje Cię skalowalność, należy użyć tej opcji ostrożnie.

Kompilacja silnych nazw

Dostępne są opcje -aptca, -delaysign, -keycontainer i -keyfile, dzięki czemu można użyć Aspnet_compiler.exe do tworzenia zestawów o silnych nazwach bez używania narzędzia Strong Name Tool (Sn.exe). Te opcje odpowiadają odpowiednio parametrom AllowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute i AssemblyKeyFileAttribute.

Omówienie tych atrybutów wykracza poza zakres tego kursu.

Laboratoria

Każde z poniższych laboratoriów opiera się na poprzednich laboratoriach. Należy je wykonać w kolejności.

Laboratorium 1: Korzystanie z interfejsu API konfiguracji

  1. Utwórz nową witrynę sieci Web o nazwie mod9lab.
  2. Dodaj nowy plik konfiguracji sieci Web do witryny.
  3. Dodaj następujący kod do pliku web.config:
<authorization>
    <deny users="?"/>
</authorization>

<identity impersonate="true"/>

Dzięki temu masz uprawnienia do zapisywania zmian w pliku web.config.

  1. Dodaj nową kontrolkę Etykieta do właściwości Default.aspx i zmień identyfikator na lblDebugStatus.
  2. Dodaj nową kontrolkę Przycisk do pliku Default.aspx.
  3. Zmień identyfikator kontrolki Przycisk na btnToggleDebug i tekst na Przełącz stan debugowania.
  4. Otwórz widok kodu pliku Default.aspx i dodaj instrukcję using dla pliku System.Web.Configuration w następujący sposób:
using System.Web.Configuration;
  1. Dodaj dwie zmienne prywatne do klasy i metodę Page_Init, jak pokazano poniżej:
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;
    }
}
  1. Dodaj następujący kod do Page_Load:
lblDebugStatus.Text = "Debug set to: " + _debugStatus.ToString();
  1. Zapisz i przeglądaj plik default.aspx. Zwróć uwagę, że kontrolka Etykieta wyświetla bieżący stan debugowania.
  2. Kliknij dwukrotnie kontrolkę Przycisk w projektancie i dodaj następujący kod do zdarzenia Kliknij dla kontrolki Przycisk:
compilation.Debug = !_debugStatus;
config.Save();
lblDebugStatus.Text = "Debug set to: " + compilation.Debug.ToString();
  1. Zapisz i przeglądaj plik default.aspx i kliknij przycisk.
  2. Otwórz plik web.config po kliknięciu każdego przycisku i zaobserwuj atrybut debugowania<w sekcji kompilacji> .

Laboratorium 2. Ponowne uruchamianie aplikacji rejestrowania

W tym laboratorium utworzysz kod, który umożliwi przełączenie rejestrowania zamykania aplikacji, uruchamiania i ponownej kompilacji w Podgląd zdarzeń.

  1. Dodaj listę DropDownList do pliku default.aspx i zmień identyfikator na ddlLogAppEvents.
  2. Ustaw właściwość AutoPostBack dla listy DropDownList na wartość true.
  3. Dodaj trzy elementy do kolekcji Elementy listy Rozwijanej. Ustaw tekst dla pierwszego elementu Wybierz wartość i wartość -1. Ustaw wartość i tekstdrugiego elementuna wartość True oraz tekst i wartość trzeciego elementu False.
  4. Dodaj nową etykietę do pliku default.aspx. Zmień identyfikator na lblLogAppEvents.
  5. Otwórz widok code-behind dla parametru default.aspx i dodaj nową deklarację dla zmiennej typu HealthMonitoringSection, jak pokazano poniżej:
public partial class _Default : System.Web.UI.Page {
    private bool _debugStatus;
    private CompilationSection compilation;
    private Configuration config;

    // new variable below
    private HealthMonitoringSection health;
}
  1. Dodaj następujący kod do istniejącego kodu w Page_Init:
health = (HealthMonitoringSection)config.GetSection("system.web/healthMonitoring");
  1. Kliknij dwukrotnie listę Rozwijaną i dodaj następujący kod do zdarzenia SelectedIndexChanged:
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();
    }
}
  1. Przeglądaj plik default.aspx.

  2. Ustaw listę rozwijaną na Fałsz.

  3. Wyczyść dziennik aplikacji w Podgląd zdarzeń.

  4. Kliknij przycisk, aby zmienić atrybut Debug dla aplikacji.

  5. Odśwież dziennik aplikacji w Podgląd zdarzeń.

    1. Czy zostały zarejestrowane jakieś zdarzenia?
    2. Dlaczego tak lub dlaczego nie?
  6. Ustaw listę rozwijaną na True.

  7. Kliknij przycisk, aby przełączyć atrybut Debug dla aplikacji.

  8. Odśwież identyfikator logowania aplikacji do Podgląd zdarzeń.

    1. Czy zostały zarejestrowane jakieś zdarzenia?
    2. Jaki był powód zamknięcia aplikacji?
  9. Poeksperymentuj z włączaniem i wyłączaniem rejestrowania oraz przyjrzyj się zmianom wprowadzonych w pliku web.config.

Więcej informacji:

model dostawcy ASP.NET 2.0 umożliwia tworzenie własnych dostawców dla nie tylko instrumentacji aplikacji, ale także w przypadku wielu innych zastosowań, takich jak członkostwo, profile itp. Aby uzyskać szczegółowe informacje na temat zapisywania dostawcy niestandardowego w celu rejestrowania zdarzeń aplikacji w pliku tekstowym, odwiedź ten link.