Làm th? nào đ? t?o ra tùy ch?nh l?i báo cáo trang trong ASP.NET b?ng cách s? d?ng Visual C# .NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 306355 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

Tóm t?t

Bài vi?t này mô t? làm th? nào đ? s? d?ng Visual C# .NET m? b?y và đáp ?ng v?i l?i khi chúng x?y ra trong ASP.NET. ASP.NET đ? c?i thi?n l?i x? l? tùy ch?n t? truy?n th?ng Microsoft Active Server trang (ASP). Trong ASP.NET, b?n có th? x? l? l?i lúc nhi?u t?ng l?p khác nhau trong các ?ng d?ng c?a b?n.

Các tính năng m?i trong ASP.NET

ASP.NET cung c?p m?t s? ti?n b? trong làm th? nào b?n có th? x? l? và đáp ?ng v?i l?i. Trong truy?n th?ng ASP, b?n x? l? l?i v?i "On Error Resume Next" (ho?c c? g?ng n?m b?t kh?i trong JScript). Cách khác, n?u b?n đang ch?y Microsoft Internet Information Services (IIS) 5.0, b?n s? d?ng các đ?i tư?ng ASPError đ? t?o ra m?t trang báo cáo tùy ch?nh l?i. Tuy nhiên, các phương pháp ti?p c?n có gi?i h?n c?a h?.

ASP.NET cung c?p nhi?u c?p đ? mà t?i đó b?n có th? x? l? và đáp ?ng v?i l?i có th? x?y ra khi b?n ch?y m?t ?ng d?ng ASP.NET. ASP.NET cung c?p ba phương pháp chính cho phép b?n đ? b?y và đáp ?ng v?i l?i khi chúng x?y ra: Page_Error, Application_Error, và t?p tin c?u h?nh ?ng d?ng (Web.config).

Bài vi?t này ch?ng t? làm th? nào đ? s? d?ng các tính năng m?i trong ?ng d?ng ASP.NET c?a b?n. M?c dù bài vi?t này mô t? làm th? nào đ? cung c?p các trang l?i tùy ch?nh và báo cáo l?i chung v? nó liên quan tr?c ti?p đ?n ASP.NET, bài vi?t này không mô t? l?i x? l? phương pháp ti?p c?n như th?-b?t-cùng kh?i và h? th?ng trư?ng h?p ngo?i l? ngôn ng? chung th?i gian ch?y (CLR).

Làm th? nào đ? s? d?ng phương pháp Page_Error

B? x? lí bi?n c? Page_Error cung c?p m?t cách đ? b?y l?i x?y ra ? c?p trang. B?n có th? ch? đơn gi?n là hi?n th? l?i thông tin (như các m?u m? đ? làm theo nào), ho?c b?n có th? đăng s? ki?n này ho?c th?c hi?n m?t s? hành đ?ng khác.

Lưu ? Ví d? này s? hi?n th? thông tin chi ti?t l?i trong tr?nh duy?t ch? cho m?c đích cu?c bi?u t?nh. B?n s? mu?n đư?c th?n tr?ng khi hi?n th? thông tin chi ti?t cho ngư?i dùng c?a các ?ng d?ng, đ?c bi?t là khi các ?ng d?ng đang ch?y trên Internet. M?t hành đ?ng thích h?p hơn s? là hi?n th? m?t thông báo cho ngư?i dùng thông báo cho h? r?ng m?t l?i đ? x?y ra, và sau đó th?c s? đăng các chi ti?t l?i c? th? trong trư?ng h?p kí nh?p.

Ví d? này ném m?t ngo?i l? null, l?c lư?ng l?i x?y ra trong các Page_Load s? ki?n x? l?. Th?c hi?n theo các bư?c sau đ? t?o ra trang ban đ?u s? ch?ng minh b?ng cách s? d?ng b? B? x? lí bi?n c? Page_Error .
  1. Th?c hi?n theo các bư?c sau đ? thêm m?t t?p tin m?i đ?t tên PageEvent.aspxto d? án c?a b?n:
    1. M? Microsoft Visual Studio net.
    2. Trong gi?i pháp Explorer, b?m chu?t ph?i vào nút ch?n m?t d? án, ch? đ? Thêm, và sau đó nh?p vào Thêm m?u Web.
    3. Trong h?p văn b?n tên , h?y nh?p PageEvent.aspx, và sau đó nh?p vào m?.
  2. Thêm m? sau đây đ? 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> 
    					

    Lưu ? Trong m?u m? này, các thu?c tính AutoEventWireup không r? ràng đ?t. N?u b?n không r? ràng làm assigna giá tr? cho các thu?c tính AutoEventWireup , m?c đ?nh giá tr? th?c s? đư?c s? d?ng. N?u b?n đang s? d?ng Visual Studio net đ? phát tri?n yourapplications, m?u Web m?u m? m?t cách r? ràng đ?t ra các giá tr? thu?c tính AutoEventWireup đ? sai. Có m?t s? khác bi?t quan tr?ng gi?a s? d?ng thatASP.NET giá tr? m?c đ?nh, và m?c đ?nh giá tr? mà Visual Studio .NET codeassigns m?u đ? thu?c tính này. N?u giá tr? thu?c tính AutoEventWireup đư?c thi?t l?p đ? sai, B? x? lí bi?n c? đư?c tuyên b? trong các.ASPX trang làm notfire. Đi?u này có th? gây nh?m l?n n?u b?n không bi?t v? thisfunctionality.
  3. T? tr?nh đơn t?p , b?m vào Lưu PageEvent.aspx.
  4. B?m chu?t ph?i vào trang, và sau đó nh?p vào ch? đ? xem trong tr?nh duy?t đ? ch?y trang. Thông báo l?i đư?c ném và reportedaccording v?i các đ?c đi?m m?.
Lưu ? B?n có th? nh?n th?y r?ng m? v?n đ? m?t cu?c g?i đ?n Server.ClearError. Đi?u này ngăn ch?n l?i t? ti?p t?c B? x? lí bi?n c? Application_Error .

Ngoài ra, b?n c?ng nên lưu ? c?a các thu?c tính Inherits trong ch? th? @ Trang . N?u Inherits đư?c thi?t l?p, b?n ph?i xây d?ng d? án trư?c khi b?n duy?t đ?n trang. N?u b?n không xây d?ng các d? án đ?u tiên, b?n nh?n đư?c thông báo l?i sau:
'Project.PageEvent' không ph?i là m?t lo?i h?p l?

Làm th? nào đ? s? d?ng phương pháp Application_Error

Tương t? như b? B? x? lí bi?n c? Page_Error , b?n có th? s? d?ng b? B? x? lí bi?n c? Application_Error đ? b?y l?i x?y ra trong ?ng d?ng c?a b?n. Do các ph?m vi ?ng d?ng r?ng c?a s? ki?n, b?n có th? kí nh?p ?ng d?ng l?i thông tin ho?c x? l? các l?i ?ng d?ng c?p khác có th? x?y ra.

M?u đ? làm theo d?a trên m?u m? trư?c Page_Error và s? b? sa th?i n?u l?i trong Page_Load không b? m?c k?t trong B? x? lí bi?n c? Page_Error . B? x? lí bi?n c? Application_Error đư?c ch? đ?nh trong file Global.asax c?a ?ng d?ng c?a b?n. Đ? đơn gi?n, các bư?c trong ph?n này t?o ra m?t trang m?i trong đó đ? ném m?t ngo?i l?, b?y l?i trong B? x? lí bi?n c? Application_Error c?a t?p tin Global.asax và vi?t l?i cho s? ghi s? ki?n. Các bư?c sau đây ch?ng minh làm th? nào đ? s? d?ng phương pháp Application_Error :
  1. Thêm m?t t?p tin m?i có tên AppEvent.aspx đ? yourproject.
  2. Thêm m? sau đây đ? AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Lưu ? Các thông tin th?o lu?n trong ph?n "Page_Error" v? các thu?c tính AutoEventWireup c?ng áp d?ng cho các m?u m? trong bư?c này. Xem theinformation trong ph?n "Page_Error" cho bi?t thêm chi ti?t.
  3. T? tr?nh đơn t?p , b?m vào Lưu AppEvent.aspx.
  4. Thêm B? x? lí bi?n c? Application_Error vào t?p tin Global.asax đ? b?y l?i đó youthrow trong Page_Load s? ki?n x? l? c?a trang AppEvent.aspx. Chú ? r?ng b?n ph?i tuyên b? b?ng cách s? d?ng addanother cho không gian tên System.Diagnostics đ? Global.asax s? d?ng s? ghi s? ki?n.

    Thêm thefollowing m? đ? các t?p tin Global.asax:
    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. Lưu các t?p tin Global.asax.
  6. Trong Visual Studio .NET, trên các xây d?ng tr?nh đơn, nh?p vào xây d?ng.
  7. B?m chu?t ph?i vào trang, và sau đó b?m xem trong tr?nh duy?t. Trong trư?ng h?p này trang s? đư?c đ? tr?ng, Tuy nhiên, b?n nên noticethat m?t m?c nh?p m?i đ? đư?c thêm vào trong s? ghi s? ki?n. M?u này làm cho m?t m?c nh?p Nh?t k? ?ng d?ng, có th? truy c?p t? b? Tr?nh xem s? ki?n. Sau khi loggingthe l?i, b?n có th? mu?n chuy?n hư?ng ngư?i dùng đ?n m?t thêm ngư?i dùng-friendlyerror trang, ho?c th?c hi?n m?t s? Hành đ?ng b? sung n?u c?n thi?t.

Làm th? nào đ? s? d?ng t?p tin Web.config

N?u b?n không g?i Server.ClearError ho?c cái b?y l?i trong Page_Error ho?c Application_Error s? ki?n x? l?, l?i đư?c x? l? d?a trên các thi?t l?p trong ph?n <customErrors>c?a t?p tin Web.config. Trong ph?n <customErrors>, b?n có th? ch? đ?nh m?t trang chuy?n hư?ng như là m?t trang l?i m?c đ?nh (defaultRedirect) ho?c ch? đ?nh vào m?t trang c? th? d?a trên m? l?i HTTP đư?c nêu ra. B?n có th? s? d?ng phương pháp này đ? tu? ch?nh thông báo l?i r?ng ngư?i dùng nh?n đư?c.

N?u m?t l?i x?y ra mà không b? m?c k?t t?i b?t k? m?c đ? trư?c đó trong ?ng d?ng c?a b?n, Trang này tùy ch?nh đư?c hi?n th?. Ph?n này ch?ng t? làm th? nào đ? s?a đ?i các t?p tin Global.asax đ? Server.ClearError không bao gi? đư?c g?i là. K?t qu? là, l?i đư?c x? l? trong Web.config file như là đi?m cu?i cùng đ? b?y l?i. </customErrors></customErrors>
  1. M? t?p tin Global.asax t? previousexample.
  2. B?nh lu?n ra d?ng Server.ClearError đ? đ?m b?o r?ng các b? m?t l?i trong Web.configfile.
  3. Lưu các thay đ?i c?a b?n đ? Global.asax. M? c?a b?n nên nowappear tương t? như sau đây:
    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. Thêm m? sau đây đ? các <customErrors>sectionto chuy?n hư?ng ngư?i dùng đ?n m?t trang tùy ch?nh:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Lưu ? B?n ph?i thay đ?i đư?ng d?n t?p tin trong defaultRedirect thu?c tính đ? r?ng nó tham chi?u tên Web máy ch? andapplication có liên quan.
  5. B?i v? các l?i đang b? m?c k?t ? c?p đ? này là sentto m?t l?i web site m?c đ?nh, b?n ph?i t?o m?t trang l?i đ?t tên là ErrorStatus.htm.Keep trong tâm trí b?n đang s? d?ng phương pháp này đ? ki?m soát nh?ng g? đư?c tr?nh bày cho theuser, do đó, ví d? này s? d?ng m?t trang .htm cho trang l?i. Đ?a ch? followingcode đ? 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. Đ? ki?m tra m?, löu caùc taäp tin, xây d?ng d? án, andthen xem AppEvent.aspx trong tr?nh duy?t. Nh?n th?y r?ng khi l?i đư?c ném, b?n đư?c chuy?n hư?ng đ?n trang ErrorStatus.htm.
M?c dù b?n có th? tham kh?o m?t trang l?i m?c đ?nh giá tr? c?a thu?c tính defaultRedirect trong ph?n <customErrors>, b?n c?ng có th? ch? đ?nh m?t trang c? th? chuy?n hư?ng d?a trên m? l?i HTTP đư?c nêu ra. ph?n t? con <error>cho phép tùy ch?n này. Ví d?:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Lưu ? Trang đư?c ch? đ?nh trong defaultRedirect c?a ph?n <customErrors>là m?t t?p tin .htm. TÔI

Thông báo r?ng ph?n <customErrors>bao g?m m?t thu?c tính ch? đ? đư?c thi?t l?p đ? vào. Ch? đ? tính đư?c s? d?ng đ? ki?m soát cách chuy?n hư?ng l?i x?y ra. Ví d?, n?u b?n đang phát tri?n các ?ng d?ng, b?n r?t có th? mu?n xem thông báo th?c t? l?i ASP.NET và không mu?n đư?c chuy?n hư?ng đ?n trang l?i thân thi?n hơn. Các thu?c tính ch? đ? bao g?m các cài đ?t chuyên bi?t sau đây: </customErrors></customErrors>
  • Ngày: trư?ng h?p ngo?i l? không đư?c chuy?n hư?ng ngư?i dùng đ?n trang đư?c ch? đ?nh defaultRedirect . Ch? đ? này đư?c s? d?ng ch? y?u trong s?n xu?t.
  • Off: ngư?i dùng nh?n đư?c thông tin ngo?i l? và là không redirectedto trang defaultRedirect . Ch? đ? này đư?c s? d?ng ch? y?u là trong phát tri?n.
  • RemoteOnly: ch? ngư?i s? d?ng truy c?p vào các web site trên máy tính c?c b? (b?i usinglocalhost) nh?n đư?c thông tin ngo?i l?. T?t c? các ngư?i dùng khác đư?c chuy?n hư?ng đ?n trang defaultRedirect . Ch? đ? này đư?c s? d?ng ch? y?u đ? g? l?i.

Gi?i đáp th?c m?c

Trong cài đ?t chuyên bi?t m?c đ?nh trên Microsoft Windows 2000 và trên Microsoft Windows XP, ASP.NET ch?y Web ?ng d?ng m? trong m?t quá tr?nh công nhân. Danh tính c?a quá tr?nh này m?c đ?nh m?t tài kho?n không có đ?c quy?n đ?a phương đư?c g?i là tài kho?n ASPNET. Trong b?n phát hành phiên bản bê-ta c?a ASP.NET, danh tính c?a quá tr?nh là h? th?ng, m?t tài kho?n qu?n tr? viên m?nh m? v?i nhi?u quy?n trên máy.

Trong cài đ?t chuyên bi?t m?c đ?nh c?a nó trên Windows Server 2003 (IIS 6), ASP.NET ch?y Web ?ng d?ng m? trong m?t quá tr?nh công nhân. Danh tính c?a quá tr?nh này m?c đ?nh m?t tài kho?n gi?i h?n đư?c g?i là NetworkService.

Đ? bi?t thêm chi ti?t v? s? thay đ?i này và làm th? nào nó có th? có hi?u l?c ch?y m? trong bài vi?t này, và m? khác có th? c?n quy?n truy c?p b? sung, ghé thăm Web site sau:
Phiên b?n 1 b?o m?t thay đ?i cho Microsoft Khuôn kh? .NET
http://msdn2.Microsoft.com/en-US/Library/ms994923.aspx

Tham kh?o

Đ? bi?t thêm chi ti?t, ghé thăm Web site sau c?a Microsoft:
Qu?n l? ngo?i l? trong .NET

Phương pháp HttpServerUtility.ClearError

Trung tâm phát tri?n .NET MSDN

trang chủ Microsoft .NET

Thu?c tính

ID c?a bài: 306355 - L?n xem xét sau cùng: 29 Tháng Mười 2013 - Xem xét l?i: 6.0
Áp d?ng
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
T? khóa: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài viết này được d?ch b?ng phần mềm dịch thu?t của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa l?i thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung c?p các bài vi?t đư?c c? biên d?ch viên và ph?n m?m d?ch thu?t th?c hi?n và c?ng đ?ng ch?nh s?a l?i đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng nhi?u ngôn ng? Tuy nhiên, bài vi?t do máy d?ch hoặc thậm chí cộng đồng chỉnh sửa sau không ph?i lúc nào c?ng hoàn h?o. Các bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này: 306355

Cung cấp Phản hồi

 

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