Cara membuat kesalahan kustom pelaporan halaman dalam ASP.NET dengan menggunakan Visual C# net

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 306355 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

Ringkasan

Artikel ini menjelaskan cara menggunakan kode Visual C# net untuk menjebak dan menanggapi kesalahan ketika mereka terjadi di ASP.NET. ASP.NET telah meningkatkan penanganan pilihan dari tradisional Microsoft Active Server halaman (ASP) kesalahan. Dalam ASP.NET, Anda dapat menangani kesalahan pada beberapa tingkat yang berbeda dalam aplikasi Anda.

Fitur baru di ASP.NET

ASP.NET menawarkan beberapa kemajuan dalam cara Anda dapat menangani dan menanggapi kesalahan. Dalam tradisional ASP, Anda menangani kesalahan dengan "Pada kesalahan Resume Next" (atau mencoba menangkap blok JScript). Bergantian, jika Anda menjalankan Microsoft Internet Information Services (IIS) 5.0, Anda menggunakan ASPError objek untuk membuat halaman pelaporan kesalahan kustom. Namun, pendekatan ini memiliki keterbatasan mereka.

ASP.NET menyediakan beberapa tingkat di mana Anda dapat menangani dan menanggapi kesalahan yang mungkin terjadi ketika Anda menjalankan aplikasi ASP.NET. ASP.NET menyediakan tiga metode utama yang memungkinkan Anda untuk menjebak dan menanggapi kesalahan ketika mereka terjadi: Page_Error, Application_Errordan file konfigurasi aplikasi (Web.config).

Artikel ini menunjukkan cara menggunakan fitur baru ini dalam aplikasi ASP.NET. Meskipun artikel ini menjelaskan cara untuk memberikan halaman kesalahan adat dan pelaporan kesalahan umum yang berhubungan langsung dengan ASP.NET, artikel ini tidak menggambarkan pendekatan seperti coba-menangkap-akhirnya blok dan Common Language Runtime (CLR) pengecualian sistem penanganan kesalahan lain.

Cara menggunakan metode Page_Error

Page_Error Pengangan kejadian menyediakan cara untuk menjebak kesalahan yang terjadi di tingkat laman. Anda hanya dapat menampilkan kesalahan informasi (seperti halnya kode contoh untuk diikuti), atau Anda dapat log acara atau melakukan beberapa tindakan lainnya.

Catatan Contoh ini menampilkan informasi kesalahan rinci dalam browser hanya untuk keperluan demonstrasi. Anda akan ingin untuk berhati-hati ketika menampilkan informasi kepada pengguna akhir aplikasi, terutama ketika aplikasi berjalan di Internet. Tindakan yang lebih tepat akan menampilkan pesan ke user memberitahu mereka bahwa terjadi kesalahan, dan kemudian benar-benar penebangan rincian kesalahan tertentu dalam acara log.

Contoh ini throws pengecualian null, yang memaksa kesalahan terjadi di Page_Load Pengangan kejadian. Ikuti langkah berikut untuk membuat halaman awal yang akan menunjukkan menggunakan Page_Error Pengangan kejadian.
  1. Ikuti langkah berikut untuk menambahkan sebuah file baru bernama PageEvent.aspxto proyek Anda:
    1. Buka Microsoft Visual Studio, .NET.
    2. Dalam solusi Explorer, klik kanan-atas node proyek, arahkan ke Add, dan kemudian klik Tambahkan formulir Web.
    3. Dalam kotak teks nama , ketik PageEvent.aspx, lalu klik buka.
  2. Tambahkan kode berikut untuk PageEvent.aspx:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    Catatan Dalam contoh kode ini, atribut AutoEventWireup tidak secara eksplisit diatur. Jika Anda tidak secara eksplisit assigna nilai ke atribut AutoEventWireup , standar nilai benar digunakan. Jika Anda menggunakan Visual Studio .NET untuk mengembangkan yourapplications, kode template formulir Web secara eksplisit menetapkan nilai atribut AutoEventWireup ke false. Ada sebuah perbedaan penting antara menggunakan thatASP.NET nilai asali, dan nilai asali yang codeassigns template Visual Studio .NET untuk atribut ini. Jika nilai atribut AutoEventWireup diatur ke palsu, Pengangan kejadian yang dideklarasikan dalam.Halaman ASPX do notfire. Ini mungkin membingungkan jika Anda tidak tahu tentang thisfunctionality.
  3. Dari berkas menu, klik Simpan PageEvent.aspx.
  4. Klik kanan-atas halaman, dan kemudian klik lihat dalam Browser untuk menjalankan halaman. Pemberitahuan yang error dilemparkan dan reportedaccording untuk spesifikasi kode.
Catatan Anda mungkin menyadari bahwa kode masalah panggilan untuk Server.ClearError. Ini mencegah kesalahan terus Application_Error Pengangan kejadian.

Selain itu, Anda juga harus mengambil catatan dari atribut Inherits di direktif @ Halaman . Jika Inherits ditetapkan, Anda harus membangun proyek sebelum Anda telusuri paling detail halaman. Jika Anda tidak membangun proyek pertama, Anda menerima pesan galat berikut:
'Project.PageEvent' adalah tidak valid

Cara menggunakan metode Application_Error

Mirip dengan Page_Error Pengangan kejadian, Anda dapat menggunakan Application_Error Pengangan kejadian untuk menjebak kesalahan yang terjadi dalam aplikasi Anda. Karena acara lingkup aplikasi-lebar, Anda dapat login aplikasi kesalahan informasi atau menangani kesalahan level aplikasi lain yang mungkin terjadi.

Contoh untuk diikuti didasarkan pada sampel kode Page_Error sebelumnya dan akan dibakar jika kesalahan dalam Page_Load tidak terjebak dalam Page_Error Pengangan kejadian. Application_Error Pengangan kejadian yang ditentukan di file Global.asax aplikasi Anda. Untuk kesederhanaan, langkah-langkah di bagian ini membuat sebuah halaman baru di mana untuk membuang pengecualian, perangkap kesalahan dalam Application_Error Pengangan kejadian file Global.asax, dan menulis kesalahan untuk event log. Langkah-langkah berikut menunjukkan cara menggunakan Application_Error metode:
  1. Menambahkan sebuah file baru yang bernama AppEvent.aspx untuk yourproject.
  2. Tambahkan kode berikut untuk AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Catatan Informasi yang dibahas dalam bagian "Page_Error" tentang atribut AutoEventWireup juga berlaku untuk sampel kode dalam langkah ini. Lihat theinformation di bagian "Page_Error" untuk lebih jelasnya.
  3. Dari berkas menu, klik Simpan AppEvent.aspx.
  4. Tambahkan Application_Error Pengangan kejadian ke file Global.asax untuk menjebak kesalahan itu youthrow di Page_Load Pengangan kejadian halaman AppEvent.aspx. Perhatikan bahwa Anda harus menggunakan addanother pernyataan untuk namespace System.Diagnostics untuk Global.asax untuk menggunakan event log.

    Tambahkan kode thefollowing untuk Global.asax file:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Simpan Global.asax file.
  6. Dalam Visual Studio .NET dalam membangun menu, klik membangun.
  7. Klik kanan-atas halaman, dan kemudian klik lihat dalam Browser. Dalam kasus ini Halaman akan kosong, namun, Anda harus noticethat entri baru telah ditambahkan di event log. Contoh ini membuat entri di log aplikasi, yang dapat diakses dari penampil aktivitas. Setelah loggingthe kesalahan Anda mungkin ingin mengarahkan pengguna ke halaman pengguna-friendlyerror lain lain, atau melakukan beberapa tindakan tambahan jika diperlukan.

Cara menggunakan berkas Web.config

Jika Anda tidak panggilan Server.ClearError atau perangkap kesalahan dalam Page_Error atau Application_Error Pengangan kejadian, kesalahan ditangani berdasarkan pengaturan di bagian <customErrors>berkas Web.config. Di bagian <customErrors>, Anda dapat menentukan laman redirect sebagai default halaman kesalahan (defaultRedirect) atau menentukan untuk halaman tertentu berdasarkan kode galat HTTP yang dibesarkan. Anda dapat menggunakan metode ini untuk menyesuaikan pesan galat yang diterima pengguna.

Jika terjadi kesalahan yang tidak terjebak di salah satu tingkat sebelumnya dalam aplikasi Anda, halaman kustom ini akan ditampilkan. Bagian ini menunjukkan bagaimana untuk memodifikasi Global.asax file sehingga Server.ClearError tidak pernah disebut. Akibatnya, kesalahan ditangani dalam berkas Web.config sebagai titik terakhir untuk menjebak kesalahan. </customErrors></customErrors>
  1. Buka Global.asax file dari previousexample.
  2. Komentar dari baris Server.ClearError untuk memastikan bahwa permukaan kesalahan dalam Web.configfile.
  3. Simpan perubahan Anda ke Global.asax. Kode Anda harus nowappear yang mirip dengan berikut:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. Tambahkan kode berikut untuk <customErrors>sectionto mengarahkan pengguna ke halaman kustom:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Catatan Anda harus memodifikasi path file dalam defaultRedirect atribut sehingga referensi nama andapplication server Web yang relevan.
  5. Karena kesalahan yang terjebak pada tingkat ini sentto halaman kesalahan default, Anda harus membuat laman galat bernama ErrorStatus.htm.Keep bahwa Anda menggunakan metode ini untuk mengontrol apa yang disajikan kepada theuser, jadi contoh ini menggunakan .htm halaman untuk halaman kesalahan. Tambahkan followingcode ke ErrorStatus.htm:
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. Untuk menguji kode, menyimpan file, membangun proyek, andthen Lihat AppEvent.aspx di browser. Perhatikan bahwa ketika error dilemparkan, Anda akan diarahkan ke halaman ErrorStatus.htm.
Meskipun Anda dapat referensi halaman kesalahan default nilai atribut defaultRedirect di bagian <customErrors>, Anda juga dapat menentukan halaman tertentu untuk mengarahkan berdasarkan kode galat HTTP yang dibesarkan. elemen anak <error>memungkinkan untuk pilihan ini. Sebagai contoh:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Catatan Halaman yang ditetapkan dalam defaultRedirect bagian <customErrors>adalah .htm file. SAYA

Perhatikan bahwa bagian <customErrors>termasuk atribut modus yang diatur ke pada. Atribut modus digunakan untuk mengontrol bagaimana pengalihan kesalahan terjadi. Misalnya, jika Anda sedang mengembangkan aplikasi, Anda kemungkinan akan melihat pesan kesalahan ASP.NET sebenarnya dan tidak ingin diarahkan ke laman galat lebih ramah-pengguna. Atribut modus termasuk pengaturan berikut: </customErrors></customErrors>
  • Pada: pengecualian tidak tertangani mengarahkan ulang pengguna ke halaman tertentu defaultRedirect . Mode ini digunakan terutama dalam produksi.
  • Off: pengguna menerima informasi pengecualian dan tidak redirectedto halaman defaultRedirect . Mode ini digunakan terutama dalam pengembangan.
  • RemoteOnly: hanya pengguna yang mengakses situs pada komputer lokal (oleh usinglocalhost) menerima informasi pengecualian. Semua pengguna diarahkan ke halaman defaultRedirect . Mode ini digunakan terutama untuk debugging.

Pemecahan masalah

Dalam instalasi standar pada Microsoft Windows 2000 dan Microsoft Windows XP, ASP.NET berjalan kode aplikasi web dalam proses pekerja. Identitas proses ini default account lokal unprivileged disebut ASPNET account. Dalam rilis beta ASP.net, proses identitas adalah sistem, akun administratif yang kuat dengan istimewa pada mesin.

Dalam instalasi standar pada Windows Server 2003 (IIS 6), ASP.NET berjalan kode aplikasi web dalam proses pekerja. Identitas proses ini default ke akun terbatas disebut NetworkService.

Untuk informasi lebih lanjut tentang perubahan ini dan bagaimana hal itu dapat mempengaruhi menjalankan kode dalam artikel ini, dan kode lain yang lain yang mungkin membutuhkan hak akses tambahan, kunjungi situs web berikut:
Versi 1 keamanan perubahan untuk Microsoft .NET Framework
http://msdn2.Microsoft.com/en-US/Library/ms994923.aspx

Referensi

Untuk informasi lebih lanjut, kunjungi situs web Microsoft berikut:
Exception manajemen di .NET

Metode HttpServerUtility.ClearError

Pusat Pengembangan MSDN .NET

Beranda Microsoft .NET

Properti

ID Artikel: 306355 - Kajian Terakhir: 29 Oktober 2013 - Revisi: 4.0
Berlaku bagi:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Kata kunci: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 306355

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com