Bagikan melalui


Konfigurasi dan Instrumentasi

oleh Microsoft

Catatan

Sejak artikel ini ditulis, penyedia keanggotaan ASP.NET telah digantikan oleh ASP.NET Identity. Kami sangat menyarankan untuk memperbarui aplikasi untuk menggunakan platform identitas ASP.NET daripada penyedia Keanggotaan yang ditampilkan pada saat artikel ini ditulis. ASP.NET Identity memiliki sejumlah keunggulan dibandingkan sistem Keanggotaan ASP.NET, termasuk :

  • Performa yang lebih baik
  • Peningkatan ekstensibilitas dan uji coba
  • Dukungan untuk OAuth, OpenID Connect, dan autentikasi dua faktor
  • Dukungan Identitas berbasis klaim
  • Interoperabilitas yang lebih baik dengan ASP.Net Core

Ada perubahan besar dalam konfigurasi dan instrumentasi di ASP.NET 2.0. API konfigurasi ASP.NET baru memungkinkan perubahan konfigurasi dilakukan secara terprogram. Selain itu, banyak pengaturan konfigurasi baru yang ada memungkinkan konfigurasi dan instrumentasi baru.

Ada perubahan besar dalam konfigurasi dan instrumentasi di ASP.NET 2.0. API konfigurasi ASP.NET baru memungkinkan perubahan konfigurasi dilakukan secara terprogram. Selain itu, banyak pengaturan konfigurasi baru yang ada memungkinkan konfigurasi dan instrumentasi baru.

Dalam modul ini, kita akan membahas ASP.NET API konfigurasi karena berkaitan dengan membaca dari dan menulis ke file konfigurasi ASP.NET, dan kami juga akan membahas instrumentasi ASP.NET. Kami juga akan membahas fitur baru yang tersedia dalam pelacakan ASP.NET.

API Konfigurasi ASP.NET

API konfigurasi ASP.NET memungkinkan Anda mengembangkan, menyebarkan, dan mengelola data konfigurasi aplikasi dengan menggunakan satu antarmuka pemrograman. Anda dapat menggunakan API konfigurasi untuk mengembangkan dan memodifikasi konfigurasi ASP.NET lengkap secara terprogram tanpa langsung mengedit XML dalam file konfigurasi. Selain itu, Anda dapat menggunakan API konfigurasi dalam aplikasi konsol dan skrip yang Anda kembangkan, di alat manajemen berbasis Web, dan di snap-in Microsoft Management Console (MMC).

Dua alat manajemen konfigurasi berikut menggunakan API konfigurasi dan disertakan dengan .NET Framework versi 2.0:

  • Snap-in MMC ASP.NET, yang menggunakan API konfigurasi untuk menyederhanakan tugas administratif, memberikan tampilan terintegrasi data konfigurasi lokal dari semua tingkat hierarki konfigurasi.
  • Alat Administrasi Situs Web, yang memungkinkan Anda mengelola pengaturan konfigurasi untuk aplikasi lokal dan jarak jauh, termasuk situs yang dihosting.

API konfigurasi ASP.NET terdiri dari sekumpulan objek manajemen ASP.NET yang dapat Anda gunakan untuk mengonfigurasi situs Web dan aplikasi secara terprogram. Objek manajemen diimplementasikan sebagai pustaka kelas .NET Framework. Model pemrograman API konfigurasi membantu memastikan konsistensi dan keandalan kode dengan memberlakukan jenis data pada waktu kompilasi. Untuk mempermudah pengelolaan konfigurasi aplikasi, API konfigurasi memungkinkan Anda melihat data yang digabungkan dari semua titik dalam hierarki konfigurasi sebagai satu koleksi, alih-alih melihat data sebagai koleksi terpisah dari file konfigurasi yang berbeda. Selain itu, API konfigurasi memungkinkan Anda memanipulasi seluruh konfigurasi aplikasi tanpa langsung mengedit XML dalam file konfigurasi. Terakhir, API menyederhanakan tugas konfigurasi dengan mendukung alat administratif, seperti Alat Administrasi Situs Web. API konfigurasi menyederhanakan penyebaran dengan mendukung pembuatan file konfigurasi di komputer dan menjalankan skrip konfigurasi di beberapa komputer.

Catatan

API konfigurasi tidak mendukung pembuatan aplikasi IIS.

Bekerja dengan Pengaturan Konfigurasi Lokal dan Jarak Jauh

Objek Konfigurasi mewakili tampilan gabungan pengaturan konfigurasi yang berlaku untuk entitas fisik tertentu, seperti komputer, atau ke entitas logis, seperti aplikasi atau situs Web. Entitas logis yang ditentukan dapat ada di komputer lokal atau di server jarak jauh. Ketika tidak ada file konfigurasi untuk entitas tertentu, objek Konfigurasi mewakili pengaturan konfigurasi default seperti yang ditentukan oleh file Machine.config.

Anda bisa mendapatkan objek Konfigurasi dengan menggunakan salah satu metode konfigurasi terbuka dari kelas berikut:

  1. Kelas ConfigurationManager, jika entitas Anda adalah aplikasi klien.
  2. Kelas WebConfigurationManager, jika entitas Anda adalah aplikasi Web.

Metode ini akan mengembalikan objek Konfigurasi, yang pada gilirannya menyediakan metode dan properti yang diperlukan untuk menangani file konfigurasi yang mendasar. Anda dapat mengakses file-file ini untuk membaca atau menulis.

Membaca

Anda menggunakan metode GetSection atau GetSectionGroup untuk membaca informasi konfigurasi. Pengguna atau proses yang membaca harus memiliki izin Baca pada semua file konfigurasi dalam hierarki.

Catatan

Jika Anda menggunakan metode GetSection statis yang mengambil parameter jalur, parameter jalur harus merujuk ke aplikasi tempat kode berjalan. Jika tidak, parameter diabaikan dan informasi konfigurasi untuk aplikasi yang sedang berjalan dikembalikan.

Menulis

Anda menggunakan salah satu metode Simpan untuk menulis informasi konfigurasi. Pengguna atau proses yang menulis harus memiliki izin Tulis pada file konfigurasi dan direktori pada tingkat hierarki konfigurasi saat ini, serta izin Baca pada semua file konfigurasi dalam hierarki.

Untuk menghasilkan file konfigurasi yang mewakili pengaturan konfigurasi yang diwariskan untuk entitas tertentu, gunakan salah satu metode konfigurasi penyimpanan berikut:

  1. Metode Simpan untuk membuat file konfigurasi baru.
  2. Metode SaveAs untuk menghasilkan file konfigurasi baru di lokasi lain.

Kelas Konfigurasi dan Namespace

Banyak kelas dan metode konfigurasi yang mirip satu sama lain. Tabel berikut menjelaskan kelas dan namespace konfigurasi yang paling umum digunakan.

Kelas konfigurasi atau namespace layanan Deskripsi
Namespace System.Configuration Berisi kelas konfigurasi utama untuk semua aplikasi .NET Framework. Kelas handler bagian digunakan untuk mendapatkan data konfigurasi untuk bagian dari metode, seperti GetSection dan GetSectionGroup. Kedua metode ini non-statis.
Kelas System.Configuration.Configuration Mewakili sekumpulan data konfigurasi untuk komputer, aplikasi, direktori Web, atau sumber daya lainnya. Kelas ini berisi metode yang berguna, seperti GetSection dan GetSectionGroup, untuk memperbarui pengaturan konfigurasi dan mendapatkan referensi ke bagian dan grup bagian. Kelas ini digunakan sebagai jenis pengembalian untuk metode yang mendapatkan data konfigurasi waktu desain, seperti metode kelas WebConfigurationManager dan ConfigurationManager.
Namespace System.Web.Configuration Berisi kelas handler bagian untuk bagian konfigurasi ASP.NET yang ditentukan pada Pengaturan Konfigurasi ASP.NET. Kelas handler bagian digunakan untuk mendapatkan data konfigurasi untuk bagian dari metode, seperti GetSection dan GetSectionGroup.
Kelas System.Web.Configuration.WebConfigurationManager Menyediakan metode yang berguna untuk mendapatkan referensi ke pengaturan konfigurasi run-time dan design-time. Metode ini menggunakan kelas System.Configuration.Configuration sebagai jenis pengembalian. Anda dapat menggunakan metode GetSection statis dari kelas ini atau metode GetSection non-statis dari kelas System.Configuration.ConfigurationManager secara bergantian. Untuk konfigurasi aplikasi Web, kelas System.Web.Configuration.WebConfigurationManager direkomendasikan alih-alih kelas System.Configuration.ConfigurationManager.
Namespace System.Configuration.Provider Menyediakan cara untuk menyesuaikan dan memperluas penyedia konfigurasi. Ini adalah kelas dasar untuk semua kelas penyedia dalam sistem konfigurasi.
Namespace System.Web.Management Berisi kelas dan antarmuka untuk mengelola dan memantau kesehatan aplikasi Web. Secara ketat, namespace ini tidak dianggap sebagai bagian dari API konfigurasi. Misalnya, pelacakan dan penembakan peristiwa dilakukan oleh kelas di namespace layanan ini.
Namespace System.Management.Instrumentation Menyediakan kelas yang diperlukan untuk instrumentasi aplikasi untuk mengekspos informasi manajemen dan peristiwa mereka melalui Instrumentasi Manajemen Windows (WMI) kepada konsumen potensial. ASP.NET pemantauan kesehatan menggunakan WMI untuk mengirimkan peristiwa. Secara ketat, namespace ini tidak dianggap sebagai bagian dari API konfigurasi.

Membaca dari File Konfigurasi ASP.NET

Kelas WebConfigurationManager adalah kelas inti untuk membaca dari file konfigurasi ASP.NET. Pada dasarnya ada tiga langkah untuk membaca file konfigurasi ASP.NET:

  1. Dapatkan objek Konfigurasi menggunakan metode OpenWebConfiguration.
  2. Dapatkan referensi ke bagian yang diinginkan dalam file konfigurasi.
  3. Baca informasi yang diinginkan dari file konfigurasi.

Objek Konfigurasi mewakili tidak mewakili file konfigurasi tertentu. Sebaliknya, ini mewakili tampilan gabungan konfigurasi komputer, aplikasi, atau situs Web. Contoh kode berikut membuat instans objek Konfigurasi yang mewakili konfigurasi aplikasi Web yang disebut ProductInfo.

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

Catatan

Perhatikan bahwa jika jalur /ProductInfo tidak ada, kode di atas akan mengembalikan konfigurasi default seperti yang ditentukan dalam file machine.config.

Setelah memiliki objek Konfigurasi, Anda kemudian dapat menggunakan metode GetSection atau GetSectionGroup untuk menelusuri pengaturan konfigurasi. Contoh berikut mendapatkan referensi ke pengaturan peniruan identitas untuk aplikasi ProductInfo di atas:

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

Menulis ke File Konfigurasi ASP.NET

Seperti dalam membaca dari file konfigurasi, kelas WebConfigurationManager adalah inti untuk menulis ke file konfigurasi Asp.NET. Ada juga tiga langkah untuk menulis ke file konfigurasi ASP.NET.

  1. Dapatkan objek Konfigurasi menggunakan metode OpenWebConfiguration.
  2. Dapatkan referensi ke bagian yang diinginkan dalam file konfigurasi.
  3. Tulis informasi yang diinginkan dari file konfigurasi menggunakan metode Simpan atau SimpanSa.

Kode berikut mengubah atribut debug elemen <kompilasi> menjadi 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!");
}

Ketika kode ini dijalankan, atribut debug dari <elemen kompilasi> akan diatur ke false untuk file web.config aplikasi webApp .

System.Web.Management Namespace

Namespace System.Web.Management menyediakan kelas dan antarmuka untuk mengelola dan memantau kesehatan aplikasi ASP.NET.

Pengelogan dilakukan dengan menentukan aturan yang mengaitkan peristiwa dengan penyedia. Aturan menentukan jenis peristiwa yang dikirim ke penyedia. Peristiwa dasar berikut tersedia untuk Anda catat:

WebBaseEvent Kelas peristiwa dasar untuk semua peristiwa. Berisi properti yang diperlukan untuk semua peristiwa seperti kode peristiwa, kode detail peristiwa, tanggal dan waktu peristiwa dinaikkan, nomor urut, pesan peristiwa, dan detail peristiwa.
WebManagementEvent Kelas peristiwa dasar untuk peristiwa manajemen, seperti masa pakai aplikasi, permintaan, kesalahan, dan peristiwa audit.
WebHeartbeatEvent Peristiwa yang dihasilkan oleh aplikasi secara berkala untuk menangkap informasi status runtime yang berguna.
WebAuditEvent Kelas dasar untuk peristiwa audit keamanan, yang digunakan untuk menandai kondisi seperti kegagalan otorisasi, kegagalan dekripsi, dll.
WebRequestEvent Kelas dasar untuk semua peristiwa permintaan informasi.
WebBaseErrorEvent Kelas dasar untuk semua peristiwa yang menunjukkan kondisi kesalahan.

Jenis penyedia yang tersedia memungkinkan Anda mengirim output peristiwa ke Pemeriksa Peristiwa, SQL Server, Instrumentasi Manajemen Windows (WMI), dan email. Penyedia dan pemetaan peristiwa yang telah dikonfigurasi sebelumnya mengurangi jumlah pekerjaan yang diperlukan untuk mendapatkan output peristiwa yang dicatat.

ASP.NET 2.0 menggunakan penyedia Log Peristiwa secara langsung untuk mencatat peristiwa berdasarkan domain aplikasi yang dimulai dan dihentikan, serta mencatat pengecualian yang tidak tertangani. Ini membantu mencakup beberapa skenario dasar. Misalnya, aplikasi Anda melemparkan pengecualian, tetapi pengguna tidak menyimpan kesalahan dan Anda tidak dapat mereproduksinya. Dengan aturan Log Peristiwa default, Anda akan dapat mengumpulkan informasi pengecualian dan tumpukan untuk mendapatkan gambaran yang lebih baik tentang jenis kesalahan apa yang terjadi. Contoh lain berlaku jika aplikasi Anda kehilangan status sesi. Dalam hal ini, Anda dapat melihat di Log Peristiwa untuk menentukan apakah domain aplikasi didaur ulang, dan mengapa domain aplikasi berhenti di tempat pertama.

Selain itu, sistem pemantauan kesehatan dapat diperluas. Misalnya, Anda dapat menentukan peristiwa Web kustom, mengaktifkannya dalam aplikasi Anda, lalu menentukan aturan untuk mengirim informasi peristiwa ke penyedia seperti email Anda. Ini memungkinkan Anda untuk dengan mudah mengikat instrumentasi Anda dengan penyedia pemantauan kesehatan. Sebagai contoh lain, Anda dapat mengaktifkan peristiwa setiap kali pesanan diproses dan menyiapkan aturan yang mengirim setiap peristiwa ke database SQL Server. Anda juga dapat mengaktifkan peristiwa saat pengguna gagal masuk beberapa kali berturut-turut, dan menyiapkan peristiwa untuk menggunakan penyedia berbasis email.

Konfigurasi untuk penyedia dan peristiwa default disimpan dalam file Web.config global. File Web.config global menyimpan semua pengaturan berbasis Web yang disimpan dalam file Machine.config dalam ASP.NET 1x. File Web.config global terletak di direktori berikut:

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

Bagian <healthMonitoring> dari file Web.config global menyediakan pengaturan konfigurasi default. Anda dapat mengganti pengaturan ini atau mengonfigurasi pengaturan Anda sendiri dengan menerapkan <bagian healthMonitoring> di file Web.config untuk aplikasi Anda.

Bagian <healthMonitoring> dari file Web.config global berisi item berikut:

penyedia Berisi penyedia yang disiapkan untuk Penampil Peristiwa, WMI, dan SQL Server.
eventMappings Berisi pemetaan untuk berbagai kelas WebBase. Anda dapat memperluas daftar ini jika Anda membuat kelas peristiwa Anda sendiri. Menghasilkan kelas peristiwa Anda sendiri memberi Anda granularitas yang lebih halus atas penyedia yang Anda kirimi informasi. Misalnya, Anda dapat mengonfigurasi pengecualian yang tidak tertangani untuk dikirim ke SQL Server, sambil mengirim peristiwa kustom Anda sendiri ke email.
aturan Menautkan eventMappings ke penyedia.
Buffering Digunakan dengan SQL Server dan penyedia email untuk menentukan seberapa sering untuk membersihkan peristiwa ke penyedia.

Di bawah ini adalah contoh kode dari file Web.config global.

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

Cara menyimpan peristiwa ke Penampil Peristiwa

Seperti disebutkan sebelumnya, penyedia untuk peristiwa pengelogan di Pemeriksa Peristiwa dikonfigurasi untuk Anda dalam file Web.config global. Secara default, semua peristiwa berdasarkan WebBaseErrorEvent dan WebFailureAuditEvent dicatat. Anda dapat menambahkan aturan tambahan untuk mencatat informasi tambahan ke Log Peristiwa. Misalnya, jika Anda ingin mencatat semua peristiwa (yaitu, setiap peristiwa berdasarkan WebBaseEvent), Anda dapat menambahkan aturan berikut ke file Web.config Anda:

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

Aturan ini akan menautkan peta peristiwa Semua Peristiwa ke penyedia Log Peristiwa. Baik eventMapping maupun penyedia disertakan dalam file Web.config global.

Cara menyimpan peristiwa ke SQL Server

Metode ini menggunakan database ASPNETDB , yang dihasilkan oleh alat Aspnet_regsql.exe. Penyedia default menggunakan string koneksi LocalSqlServer, yang menggunakan database berbasis file di folder App_data atau instans SQLExpress lokal SQL Server. String koneksi LocalSqlServer dan SqlProvider dikonfigurasi dalam file Web.config global.

String koneksi LocalSqlServer dalam file Web.config global terlihat seperti ini:

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

Jika Anda ingin menggunakan instans SQL Server lain, Anda harus menggunakan alat Aspnet_regsql.exe, yang dapat ditemukan di folder %windir%\Microsoft.Net\Framework\v2.0.*. Gunakan alat Aspnet_regsql.exe untuk menghasilkan database ASPNETDB kustom pada instans SQL Server, lalu tambahkan string koneksi ke file konfigurasi aplikasi Anda, lalu tambahkan penyedia dengan menggunakan string koneksi baru. Setelah database ASPNETDB dibuat, Anda harus mengatur aturan untuk menautkan eventMapping ke sqlProvider.

Baik Anda menggunakan SqlProvider default atau mengonfigurasi penyedia Anda sendiri, Anda harus menambahkan aturan yang menautkan penyedia dengan peta peristiwa. Aturan berikut menautkan penyedia baru yang Anda buat di atas ke peta peristiwa Semua Peristiwa . Aturan ini akan mencatat semua peristiwa berdasarkan WebBaseEvent dan mengirimkannya ke MySqlWebEventProvider yang akan menggunakan string koneksi MYASPNETDB. Kode berikut menambahkan aturan untuk menautkan penyedia dengan peta peristiwa:

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

Jika Anda hanya ingin mengirim kesalahan ke SQL Server, Anda bisa menambahkan aturan berikut:

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

Cara meneruskan peristiwa ke WMI

Anda juga dapat meneruskan peristiwa ke WMI. Penyedia WMI dikonfigurasi untuk Anda dalam file Web.config global secara default.

Contoh kode berikut menambahkan aturan untuk meneruskan peristiwa ke WMI:

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

Anda harus menambahkan aturan untuk mengaitkan eventMapping ke penyedia, dan juga aplikasi pendengar WMI untuk mendengarkan peristiwa. Contoh kode berikut menambahkan aturan untuk menautkan penyedia WMI ke peta peristiwa Semua Peristiwa :

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

Cara meneruskan peristiwa ke email

Anda juga dapat meneruskan peristiwa ke email. Berhati-hatilah dengan aturan peristiwa mana yang Anda petakan ke penyedia email Anda, karena Anda dapat secara tidak sengaja mengirimi diri Anda banyak informasi yang mungkin lebih cocok untuk SQL Server atau Log Peristiwa. Ada dua penyedia email; SimpleMailWebEventProvider dan TemplatedMailWebEventProvider. Masing-masing memiliki atribut konfigurasi yang sama, dengan pengecualian atribut "template" dan "detailTemplateErrors", yang keduanya hanya tersedia di TemplatedMailWebEventProvider.

Catatan

Penyedia email ini tidak dikonfigurasi untuk Anda. Anda harus menambahkannya ke file Web.config Anda.

Perbedaan utama antara kedua penyedia email ini adalah bahwa SimpleMailWebEventProvider mengirim email dalam templat generik yang tidak dapat dimodifikasi. Contoh file Web.config menambahkan penyedia email ini ke daftar penyedia yang dikonfigurasi dengan menggunakan aturan berikut:

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

Aturan berikut ini juga ditambahkan untuk mengikat penyedia email ke peta peristiwa Semua Peristiwa :

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

pelacakan ASP.NET 2.0

Ada tiga peningkatan utama untuk dilacak di ASP.NET 2.0.

  1. Fungsionalitas pelacakan terintegrasi
  2. Akses terprogram ke pesan pelacakan
  3. Pelacakan tingkat aplikasi yang disempurnakan

FungsiOnalitas Pelacakan Terintegrasi

Anda sekarang dapat merutekan pesan yang dipancarkan oleh kelas System.Diagnostics.Trace untuk ASP.NET output pelacakan, dan merutekan pesan yang dipancarkan oleh ASP.NET melacak ke System.Diagnostics.Trace. Anda juga dapat meneruskan ASP.NET peristiwa instrumentasi ke System.Diagnostics.Trace. Fungsionalitas ini disediakan oleh atribut writeToDiagnosticsTrace baru dari <elemen jejak> . Ketika nilai Boolean ini benar, ASP.NET Melacak pesan diteruskan ke infrastruktur pelacakan System.Diagnostics untuk digunakan oleh pendengar apa pun yang terdaftar untuk menampilkan pesan Pelacakan.

Akses Terprogram ke Lacak Pesan

ASP.NET 2.0 memungkinkan akses terprogram ke semua pesan jejak melalui kelas TraceContextRecord dan koleksi TraceRecords . Cara paling efisien untuk mengakses pesan jejak adalah dengan mendaftarkan delegasi TraceContextEventHandler (juga baru di ASP.NET 2.0) untuk menangani peristiwa TraceFinished baru. Anda kemudian dapat mengulangi pesan pelacakan sesuai keinginan Anda.

Contoh kode berikut mengilustrasikan ini:

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

Dalam contoh di atas, saya mengulang koleksi TraceRecords lalu menulis setiap pesan ke aliran Respons.

Pelacakan Application-Level yang Disempurnakan

Pelacakan tingkat aplikasi ditingkatkan melalui pengenalan atribut mostRecent baru dari <elemen jejak> . Atribut ini menentukan apakah output pelacakan tingkat aplikasi terbaru ditampilkan dan data pelacakan yang lebih lama di luar batas yang ditunjukkan oleh requestLimit dibuang. Jika false, data pelacakan ditampilkan untuk permintaan hingga atribut requestLimit tercapai.

Alat Baris Perintah ASP.NET

Ada beberapa alat baris perintah untuk membantu konfigurasi ASP.NET. ASP.NET pengembang harus terbiasa dengan alat aspnet_regiis.exe. ASP.NET 2.0 menyediakan tiga alat baris perintah lainnya untuk membantu konfigurasi.

Alat baris perintah berikut ini tersedia:

Alat Gunakan
aspnet_regiis.exe Memungkinkan pendaftaran ASP.NET dengan IIS. Ada dua versi alat ini yang dikirim dengan ASP.NET 2.0, satu untuk sistem 32-bit (dalam folder Kerangka Kerja) dan satu untuk sistem 64-bit (di folder Framework64.) Versi 64-bit tidak akan diinstal pada OS 32-bit.
aspnet_regsql.exe Alat Pendaftaran ASP.NET SQL Server digunakan untuk membuat database Microsoft SQL Server untuk digunakan oleh penyedia SQL Server di ASP.NET, atau untuk menambahkan atau menghapus opsi dari database yang sudah ada. File Aspnet_regsql.exe terletak di folder [drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber di server Web Anda.
aspnet_regbrowsers.exe Alat Pendaftaran Browser ASP.NET mengurai dan mengkompilasi semua definisi browser di seluruh sistem ke dalam perakitan dan menginstal perakitan ke dalam cache perakitan global. Alat ini menggunakan file definisi browser (. File BROWSER) dari subdirektori Browser .NET Framework. Alat ini dapat ditemukan di direktori %SystemRoot%\Microsoft.NET\Framework\version\.
aspnet_compiler.exe Alat kompilasi ASP.NET memungkinkan Anda mengkompilasi aplikasi web ASP.NET, baik di tempat maupun untuk penyebaran ke lokasi target seperti server produksi. Kompilasi di tempat membantu performa aplikasi karena pengguna akhir tidak mengalami penundaan pada permintaan pertama ke aplikasi saat aplikasi dikompilasi.

Karena alat aspnet_regiis.exe bukan alat baru untuk ASP.NET 2.0, kami tidak akan membahasnya di sini.

Alat Pendaftaran ASP.NET SQL Server - aspnet_regsql.exe

Anda dapat mengatur beberapa jenis opsi menggunakan alat Pendaftaran ASP.NET SQL Server. Anda dapat menentukan koneksi SQL, menentukan layanan aplikasi ASP.NET mana yang menggunakan SQL Server untuk mengelola informasi, menunjukkan database atau tabel mana yang digunakan untuk dependensi cache SQL, dan menambahkan atau menghapus dukungan untuk menggunakan SQL Server untuk menyimpan prosedur dan status sesi.

Beberapa ASP.NET layanan aplikasi mengandalkan penyedia untuk mengelola penyimpanan dan pengambilan data dari sumber data. Setiap penyedia khusus untuk sumber data. ASP.NET menyertakan penyedia SQL Server untuk fitur ASP.NET berikut:

Saat Anda menginstal ASP.NET, file Machine.config untuk server Anda menyertakan elemen konfigurasi yang menentukan penyedia SQL Server untuk setiap fitur ASP.NET yang mengandalkan penyedia. Penyedia ini dikonfigurasi, secara default, untuk menyambungkan ke instans pengguna lokal SQL Server Express 2005. Jika Anda mengubah string koneksi default yang digunakan oleh penyedia, maka sebelum Anda dapat menggunakan salah satu fitur ASP.NET yang dikonfigurasi dalam konfigurasi komputer, Anda harus menginstal database SQL Server dan elemen database untuk fitur yang Anda pilih menggunakan Aspnet_regsql.exe. Jika database yang Anda tentukan dengan alat pendaftaran SQL belum ada (aspnetdb akan menjadi database default jika tidak ditentukan pada baris perintah), maka pengguna saat ini harus memiliki hak untuk membuat database di SQL Server serta membuat elemen skema dalam database.

Dependensi Cache SQL

Fitur lanjutan dari penembolokan output ASP.NET adalah dependensi cache SQL. Dependensi cache SQL mendukung dua mode operasi yang berbeda: yang menggunakan implementasi ASP.NET polling tabel dan mode kedua yang menggunakan fitur pemberitahuan kueri SQL Server 2005. Alat pendaftaran SQL dapat digunakan untuk mengonfigurasi mode operasi polling tabel.

Status Sesi

Secara default, nilai dan informasi status sesi disimpan dalam memori dalam proses ASP.NET. Atau, Anda dapat menyimpan data sesi dalam database SQL Server, di mana data tersebut dapat dibagikan oleh beberapa server Web. Jika database yang Anda tentukan untuk status sesi dengan alat pendaftaran SQL belum ada, maka pengguna saat ini harus memiliki hak untuk membuat database di SQL Server serta membuat elemen skema dalam database. Jika database memang ada, maka pengguna saat ini harus memiliki hak untuk membuat elemen skema di database yang ada.

Untuk menginstal database status sesi di SQL Server, jalankan alat Aspnet_regsql.exe dan berikan informasi berikut dengan perintah :

  • Nama instans SQL Server, menggunakan opsi -S.
  • Kredensial masuk untuk akun yang memiliki izin untuk membuat database di komputer yang menjalankan SQL Server. Gunakan opsi -E untuk menggunakan pengguna yang saat ini masuk, atau gunakan opsi -U untuk menentukan ID pengguna bersama dengan opsi -P untuk menentukan kata sandi.
  • Opsi baris perintah -ssadd untuk menambahkan database status sesi.

Secara default, Anda tidak dapat menggunakan alat Aspnet_regsql.exe untuk menginstal database status sesi pada komputer yang berjalan SQL Server 2005 Express Edition.

Alat Pendaftaran Browser ASP.NET - aspnet_regbrowsers.exe

Dalam ASP.NET versi 1.1, file Machine.config berisi bagian yang disebut <browserCaps>. Bagian ini berisi serangkaian entri XML yang menentukan konfigurasi untuk berbagai browser berdasarkan ekspresi reguler. Untuk ASP.NET versi 2.0, baru . File BROWSER menentukan parameter browser tertentu menggunakan entri XML. Anda menambahkan informasi di browser baru dengan menambahkan baru. File BROWSER ke folder yang terletak di %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers pada sistem Anda.

Karena aplikasi tidak membaca file .config setiap kali memerlukan informasi browser, Anda dapat membuat baru . File BROWSER dan jalankan Aspnet_regbrowsers.exe untuk menambahkan perubahan yang diperlukan ke assembly. Hal ini memungkinkan server untuk segera mengakses informasi browser baru sehingga Anda tidak perlu mematikan aplikasi apa pun untuk mengambil informasi. Aplikasi dapat mengakses kemampuan browser melalui properti Browser dari HttpRequest saat ini.

Opsi berikut tersedia saat menjalankan aspnet_regbrowser.exe:

Opsi Deskripsi
-? Menampilkan teks Bantuan Aspnet_regbbrowsers.exe di jendela perintah.
-i Membuat perakitan kemampuan browser runtime dan menginstalnya di cache perakitan global.
-U Menghapus instalan rakitan kemampuan browser runtime dari cache assembly global.

Alat Kompilasi ASP.NET - aspnet_compiler.exe

Alat kompilasi ASP.NET dapat digunakan dengan dua cara umum: untuk kompilasi dan kompilasi di tempat untuk penyebaran, di mana direktori output target ditentukan.

Mengkompilasi Aplikasi di Tempat

Alat kompilasi ASP.NET dapat mengkompilasi aplikasi di tempat, yaitu, meniru perilaku membuat beberapa permintaan ke aplikasi, sehingga menyebabkan kompilasi reguler. Pengguna situs yang telah dikompilasi sebelumnya tidak akan mengalami penundaan yang disebabkan oleh kompilasi halaman pada permintaan pertama.

Saat Anda melakukan prakombinasikan situs di tempat, item berikut ini berlaku:

  • Situs ini menyimpan file dan struktur direktorinya.
  • Anda harus memiliki pengkompilasi untuk semua bahasa pemrograman yang digunakan oleh situs pada server.
  • Jika ada file yang gagal kompilasi, seluruh situs gagal kompilasi.

Anda juga dapat mengolah ulang aplikasi di tempat setelah menambahkan file sumber baru ke dalamnya. Alat ini hanya mengkompilasi file baru atau yang diubah kecuali Anda menyertakan opsi -c .

Catatan

Kompilasi aplikasi yang berisi aplikasi berlapis tidak mengkompilasi aplikasi berlapis. Aplikasi berlapis harus dikompilasi secara terpisah.

Mengkompilasi Aplikasi untuk Penyebaran

Anda mengkompilasi aplikasi untuk penyebaran (kompilasi ke lokasi target) dengan menentukan parameter targetDir. targetDir dapat menjadi lokasi akhir untuk aplikasi Web, atau aplikasi yang dikompilasi dapat disebarkan lebih lanjut. Menggunakan opsi -u mengkompilasi aplikasi sia-sia sehingga Anda dapat membuat perubahan pada file tertentu dalam aplikasi yang dikompilasi tanpa mengkompilasinya kembali. Aspnet_compiler.exe membuat perbedaan antara jenis file statis dan dinamis, dan menanganinya secara berbeda saat membuat aplikasi yang dihasilkan.

  • Jenis file statis adalah yang tidak memiliki pengkompilasi atau penyedia build terkait, seperti file yang bernama memiliki ekstensi seperti .css, .gif, .htm, .html, .jpg, .js dan sebagainya. File-file ini hanya disalin ke lokasi target, dengan tempat relatif mereka dalam struktur direktori dipertahankan.
  • Jenis file dinamis adalah yang memiliki pengkompilasi atau penyedia build terkait, termasuk file dengan ekstensi nama file khusus ASP.NET seperti .asax, .ascx, .ashx, .aspx, .browser, .master, dan sebagainya. Alat kompilasi ASP.NET menghasilkan rakitan dari file-file ini. Jika opsi -u dihilangkan, alat ini juga membuat file dengan ekstensi nama file . DIKOMPILASI yang memetakan file sumber asli ke assembly mereka. Untuk memastikan bahwa struktur direktori sumber aplikasi dipertahankan, alat ini menghasilkan file tempat penampung di lokasi yang sesuai di aplikasi target.

Anda harus menggunakan opsi -u untuk menunjukkan bahwa konten aplikasi yang dikompilasi dapat dimodifikasi. Jika tidak, modifikasi berikutnya diabaikan atau menyebabkan kesalahan run-time.

Tabel berikut ini menjelaskan bagaimana alat ASP.NET Compilation menangani berbagai jenis file saat opsi -u disertakan.

Jenis file Tindakan pengkompilasi
.ascx, .aspx, .master File-file ini dibagi menjadi markup dan kode sumber, yang mencakup file code-behind dan kode apa pun yang diapit dalam <elemen script runat="server> ". Kode sumber dikompilasi ke dalam rakitan, dengan nama yang berasal dari algoritma hashing, dan rakitan ditempatkan di direktori Bin. Setiap kode sebaris, yaitu, kode yang diapit antara <tanda kurung % dan %> , disertakan dengan markup dan tidak dikompilasi. File baru dengan nama yang sama dengan file sumber dibuat untuk berisi markup dan ditempatkan di direktori output yang sesuai.
.ashx, .asmx File-file ini tidak dikompilasi dan dipindahkan ke direktori output apa adanya dan tidak dikompilasi. Jika Anda ingin kode handler dikompilasi, tempatkan kode ke dalam file kode sumber di direktori App_Code.
.cs, .vb, .jsl, .cpp (tidak termasuk file code-behind untuk jenis file yang tercantum sebelumnya) File-file ini dikompilasi dan disertakan sebagai sumber daya dalam rakitan yang mereferensikannya. File sumber tidak disalin ke direktori output. Jika file kode tidak dirujuk, file tersebut tidak dikompilasi.
Jenis file kustom File-file ini tidak dikompilasi. File-file ini disalin ke direktori output yang sesuai.
File kode sumber di subdirektori App_Code File-file ini dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin.
File .resx dan .resource di subdirektori App_GlobalResources File-file ini dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin. Tidak ada subdirektori App_GlobalResources yang dibuat di bawah direktori output utama, dan tidak ada file .resx atau .resources yang terletak di direktori sumber yang disalin ke direktori output.
File .resx dan .resource di subdirektori App_LocalResources File-file ini tidak dikompilasi dan disalin ke direktori output yang sesuai.
File .skin di subdirektori App_Themes File .skin dan file tema statis tidak dikompilasi dan disalin ke direktori output yang sesuai.
.browser Web.config Rakitan jenis file statis yang sudah ada di direktori Bin File-file ini disalin apa adanya ke direktori output.

Tabel berikut ini menjelaskan bagaimana alat kompilasi ASP.NET menangani berbagai jenis file saat opsi -u dihilangkan.

Jenis file Tindakan pengkompilasi
.aspx, .asmx, .ashx, .master File-file ini dibagi menjadi markup dan kode sumber, yang mencakup file code-behind dan kode apa pun yang diapit dalam <elemen script runat="server> ". Kode sumber dikompilasi ke dalam rakitan, dengan nama yang berasal dari algoritma hashing. Rakitan yang dihasilkan ditempatkan di direktori Bin. Setiap kode sebaris, yaitu, kode yang diapit antara <tanda kurung % dan %> , disertakan dengan markup dan tidak dikompilasi. Pengkompilasi membuat file baru untuk memuat markup dengan nama yang sama dengan file sumber. File yang dihasilkan ini ditempatkan di direktori Bin. Pengkompilasi juga membuat file dengan nama yang sama dengan file sumber tetapi dengan ekstensi . DIKOMPILASI yang berisi informasi pemetaan. Tje. File YANG DIKOMPILASI ditempatkan di direktori output yang sesuai dengan lokasi asli file sumber.
.ascx File-file ini dibagi menjadi markup dan kode sumber. Kode sumber dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin, dengan nama yang berasal dari algoritma hashing. Tidak ada file markup yang dihasilkan.
.cs, .vb, .jsl, .cpp (tidak termasuk file code-behind untuk jenis file yang tercantum sebelumnya) Kode sumber yang direferensikan oleh rakitan yang dihasilkan dari file .ascx, .ashx, atau .aspx dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin. Tidak ada file sumber yang disalin.
Jenis file kustom File-file ini dikompilasi seperti file dinamis. Bergantung pada jenis file yang menjadi dasarnya, pengkompilasi dapat menempatkan file pemetaan di direktori output.
File di subdirektori App_Code File kode sumber dalam subdirektori ini dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin.
File dalam subdirektori App_GlobalResources File-file ini dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin. Tidak ada subdirektori App_GlobalResources yang dibuat di bawah direktori output utama. Jika file konfigurasi menentukan file appliesTo="All", .resx dan .resources disalin ke direktori output. Mereka tidak disalin jika direferensikan oleh BuildProvider.
File .resx dan .resource di subdirektori App_LocalResources File-file ini dikompilasi ke dalam rakitan dengan nama unik dan ditempatkan di direktori Bin. Tidak ada file .resx atau .resource yang disalin ke direktori output.
File .skin di subdirektori App_Themes Tema dikompilasi ke dalam rakitan dan ditempatkan di direktori Bin. File stub dibuat untuk file .skin dan ditempatkan di direktori output yang sesuai. File statis (seperti .css) disalin ke direktori output.
.browser Web.config Rakitan jenis file statis yang sudah ada di direktori Bin File-file ini disalin apa adanya ke direktori output.

Nama Rakitan Tetap

Beberapa skenario, seperti menyebarkan aplikasi Web menggunakan MSI Windows Installer, memerlukan penggunaan nama dan konten file yang konsisten, serta struktur direktori yang konsisten untuk mengidentifikasi rakitan atau pengaturan konfigurasi untuk pembaruan. Dalam kasus tersebut, Anda dapat menggunakan opsi -fixednames untuk menentukan bahwa alat kompilasi ASP.NET harus mengkompilasi perakitan untuk setiap file sumber alih-alih menggunakan tempat beberapa halaman dikompilasi menjadi rakitan. Ini dapat menyebabkan sejumlah besar rakitan, jadi jika Anda khawatir dengan skalabilitas, Anda harus menggunakan opsi ini dengan hati-hati.

Kompilasi Nama Kuat

Opsi -aptca, -delaysign, -keycontainer , dan -keyfile disediakan sehingga Anda dapat menggunakan Aspnet_compiler.exe untuk membuat rakitan bernama kuat tanpa menggunakan Strong Name Tool (Sn.exe) secara terpisah. Opsi ini masing-masing sesuai dengan AllowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute, dan AssemblyKeyFileAttribute.

Diskusi tentang atribut ini berada di luar lingkup kursus ini.

Lab

Masing-masing lab berikut dibangun di lab sebelumnya. Anda harus melakukannya secara berurutan.

Lab 1: Menggunakan API Konfigurasi

  1. Buat situs Web baru yang disebut mod9lab.
  2. Tambahkan File Konfigurasi Web baru ke situs.
  3. Tambahkan yang berikut ini ke file web.config:
<authorization>
    <deny users="?"/>
</authorization>

<identity impersonate="true"/>

Ini akan memastikan bahwa Anda memiliki izin untuk menyimpan perubahan ke file web.config.

  1. Tambahkan kontrol Label baru ke Default.aspx dan ubah ID ke lblDebugStatus.
  2. Tambahkan kontrol Tombol baru ke Default.aspx.
  3. Ubah ID kontrol Tombol menjadi btnToggleDebug dan Teks untuk Mengalihkan Status Debug.
  4. Buka Tampilan Kode untuk file code-behind Default.aspx dan tambahkan pernyataan penggunaan untuk System.Web.Configuration sebagai berikut:
using System.Web.Configuration;
  1. Tambahkan dua variabel privat ke kelas dan metode Page_Init seperti yang ditunjukkan di bawah ini:
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. Tambahkan kode berikut ke Page_Load:
lblDebugStatus.Text = "Debug set to: " + _debugStatus.ToString();
  1. Simpan dan telusuri default.aspx. Perhatikan bahwa kontrol Label menampilkan status debug saat ini.
  2. Klik dua kali kontrol Tombol di perancang dan tambahkan kode berikut ke peristiwa Klik untuk kontrol Tombol:
compilation.Debug = !_debugStatus;
config.Save();
lblDebugStatus.Text = "Debug set to: " + compilation.Debug.ToString();
  1. Simpan dan telusuri default.aspx dan klik tombol .
  2. Buka file web.config setelah setiap klik tombol dan amati atribut debug di bagian <kompilasi> .

Lab 2: Pencatatan Ulang Aplikasi

Di lab ini, Anda akan membuat kode yang akan memungkinkan Anda untuk beralih pengelogan penonaktifan aplikasi, startup, dan kompilasi ulang di Pemampil Peristiwa.

  1. Tambahkan DropDownList ke default.aspx dan ubah ID ke ddlLogAppEvents.
  2. Atur properti AutoPostBack untuk DropDownList ke true.
  3. Tambahkan tiga item ke koleksi Item untuk DropDownList. Buat Teks untuk item pertama Pilih Nilai dan nilai -1. Buat Teks dan Nilai item kedua True dan Teks dan Nilai item ketiga False.
  4. Tambahkan Label baru ke default.aspx. Ubah ID menjadi lblLogAppEvents.
  5. Buka tampilan code-behind untuk default.aspx dan tambahkan deklarasi baru untuk variabel jenis HealthMonitoringSection seperti yang ditunjukkan di bawah ini:
public partial class _Default : System.Web.UI.Page {
    private bool _debugStatus;
    private CompilationSection compilation;
    private Configuration config;

    // new variable below
    private HealthMonitoringSection health;
}
  1. Tambahkan kode berikut ke kode yang ada di Page_Init:
health = (HealthMonitoringSection)config.GetSection("system.web/healthMonitoring");
  1. Klik dua kali pada DropDownList dan tambahkan kode berikut ke peristiwa 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. Telusuri default.aspx.

  2. Atur menu dropdown ke False.

  3. Hapus log Aplikasi di Penampil Peristiwa.

  4. Klik tombol untuk mengubah atribut Debug untuk aplikasi.

  5. Refresh log Aplikasi di Pemampil Peristiwa.

    1. Apakah ada peristiwa yang dicatat?
    2. Mengapa atau mengapa tidak?
  6. Atur menu dropdown ke True.

  7. Klik tombol untuk mengalihkan atribut Debug untuk aplikasi.

  8. Refresh login Aplikasi pemampil peristiwa.

    1. Apakah ada peristiwa yang dicatat?
    2. Apa alasan penonaktifan aplikasi?
  9. Bereksperimenlah dengan mengaktifkan dan menonaktifkan pengelogan dan melihat perubahan yang dilakukan pada file web.config.

Informasi selengkapnya:

ASP.NET model Penyedia 2.0 memungkinkan Anda membuat penyedia Anda sendiri untuk tidak hanya instrumentasi aplikasi, tetapi untuk banyak kegunaan lain seperti Keanggotaan, Profil, dll. Untuk informasi terperinci tentang menulis penyedia kustom untuk mencatat peristiwa aplikasi ke file teks, kunjungi tautan ini.