自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用ASP.NET 2.0記錄錯誤

開發(fā) 后端
在我們開發(fā)和操作一個網站的過程中不可避免會發(fā)生錯誤和失敗的情況. ASP.NET 2.0 提供了跟蹤、instrumentation以及錯誤處理機制來檢測和修補程序中的問題。

在本文中,我們將通過一個簡單的處理來記錄在我們的網站中的錯誤和異常.我們會這樣操作:每當遇到程序錯誤時,將使用者導航到一個單獨的頁面.同時,錯誤將被記錄到服務器上的一個文本文件.每當錯誤發(fā)生時,我們將以日志的形式每天記錄.說了這么多,讓我們來看一些代碼。

步驟一:首先創(chuàng)建一個錯誤文件夾用于存放錯誤日志文件.鼠標右鍵站點 > 創(chuàng)建新文件夾.將該文件夾命名為"Error". 如果站點中沒有 Web.config 文件時,請?zhí)砑右粋€. 右鍵站點 > 添加新項目 > Web.config。

步驟二:現(xiàn)在我們要創(chuàng)建一個錯誤處理的代碼.我們只需要右鍵站點 > 添加新項目 > 選擇類. 重命名該類為"ErrHandler.cs" ,然后單擊 "添加" 按鈕.當你這么操作的時候,會彈出一個對話框,是否要將這個類文件保存在"App_Code"里面,我們選擇接受。

步驟三:現(xiàn)在我們?yōu)镋rrHandler.class添加一些功能.該類用于接受錯誤信息并將錯誤信息保存在一個文本文件中.每天創(chuàng)建一個這樣的文本文件.如果已經存在相同的文件名時,錯誤信息將會追加到這個文件中.否則,就創(chuàng)建一個新文件,并將錯誤信息寫入該文件。

代碼看來如下:

 /// Handles error by accepting the error message 
    /// Displays the page on which the error occured
    public static void WriteError(string errorMessage)
    {
        try
        {
            string path = "~/Error/" + DateTime.Today.ToString("dd-mm-yy") + ".txt";
            if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
            {
                File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
            }
            using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
            {
                w.WriteLine("\r\nLog Entry : ");
                w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
                string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +
                              ". Error Message:" + errorMessage;
                w.WriteLine(err);
                w.WriteLine("__________________________");
                w.Flush();
                w.Close();
            }
        }
        catch (Exception ex)
        {
            WriteError(ex.Message);
        }
    }

這就是我們的ErrHandler類了.然后我們來看看如何使用這個類和在Page級中(Application級中)處理錯誤。

在Page級中處理錯誤

在Default.aspx中,從工具箱中添加一個button控件.將這個button命名為 btnError 并設置值為 "Throw Handled Exception".我們將拋出一個異常.只要我們定義了 catch 塊,當錯誤發(fā)生時,就會被捕捉到并登記在Error文件夾中.文本文件將以當天的日期作為文件名,不存在文件時,一個新的文件將會被以下代碼所創(chuàng)建.

按鈕點擊操作代碼如下:

protected void btnHandled_Click(object sender, EventArgs e)
    {
        try
        {
            throw new Exception("Sample Exception");
        }
        catch (Exception ex)
        {
            // Log the error to a text file in the Error folder
            ErrHandler.WriteError(ex.Message);
        }
    }

現(xiàn)在,運行程序,并點擊按鈕.因為我們已經在代碼中處理了錯誤和記錄下了異常,你會發(fā)現(xiàn)當點擊按鈕時,似乎什么也沒發(fā)生.關閉程序,刷新Error文件夾,你會看到有個以今天日期為文件名的新文件被創(chuàng)建.異常已經被成功記錄下如下所示.其中日期和時間在您的機器上會有所不同。

Log Entry : 
01/11/2008 23:33:46
Error in:http://localhost:51087/ErrorHandling/Default.aspx. Error Message:Sample Exception
__________________________

Redirecting users on unhandled errors(在未有處理錯誤情況下重定向用戶)

讓我們看看如何在Application級上來捕捉未有錯誤處理而發(fā)生的錯誤,并將用戶定向到一個不同的頁面。

要捕捉到未有錯誤處理的錯誤,只需做以下的工作即可.添加一個 Global.asax 文件(右鍵工程項目 > Add New Item > Glabal.asax).在當中的 Application_Error() 方法中,增加以下代碼:

 void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs
        Exception objErr = Server.GetLastError().GetBaseException();
        string err = "Error in: " + Request.Url.ToString() +
                          ". Error Message:" + objErr.Message.ToString();
        // Log the error
        ErrHandler.WriteError(err);        
    }

我們注意到通過使用 Server.GetLastError() 函數(shù)來捕捉錯誤.當一個未有錯誤處理的錯誤發(fā)生時,要將用戶重定向到不同的頁面,我們要做的是,打開你的 Web.config 文件,并定位到 <customErrors> 標簽處并注銷它.在移除注釋后,標簽看來應該是這樣的:

<!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.        -->
 
                  <customErrorsmode="RemoteOnly"defaultRedirect="GenericErrorPage.htm">
                        <errorstatusCode="403"redirect="NoAccess.htm" />
                        <errorstatusCode="404"redirect="FileNotFound.htm" />
                  </customErrors>

將:

mode="RemoteOnly"tomode="On"
defaultRedirect="GenericErrorPage.htm" to defaultRedirect="ErrorPage.aspx"

修改為:

<customErrorsmode="On"defaultRedirect="ErrorPage.aspx">
                        <errorstatusCode="403"redirect="NoAccess.htm" />
                        <errorstatusCode="404"redirect="FileNotFound.htm" />
                  </customErrors>

這個配置文件將會將用戶導向名為ErrorPage.aspx 的頁面.我們來創(chuàng)建這個錯誤頁面,并顯示一些信息給用戶。

右鍵網站 > Add New Item > 創(chuàng)建 ErrorPage.aspx ,然后顯示一個信息在頁面中,提示用戶有個錯誤發(fā)生了。

為了測試這個功能,我們回到 Default.aspx, 添加新的按鈕并命名為 btnUnhandled 并將文本屬性設置為 Throw Unhandled Exception.我們將使用"Divide By Zero"異常.并不去處理它.我們可以發(fā)現(xiàn)少了 catch 塊.所以當錯誤發(fā)生時,用戶就會按照我們在web.confg文件中設置的重定向到 "ErrorPage.aspx".

protected void btnHandled_Click(object sender, EventArgs e)
{
      int i = 9;
      int j = 0;
      Respone.Write( i / j );
}

運行這個程序點擊 "Throw Unhandled Exception" 按鈕.你會發(fā)現(xiàn)用戶被自動地定向到了 Error 頁面.并且錯誤也被記錄在 Error 文件夾中。

原文來自于:http://www.dotnetcurry.com/ShowArticle.aspx?ID=94&AspxAutoDetectCookieSupport=1

【編輯推薦】

  1. ASP.NET MVC教程:理解模型、視圖和控制器
  2. ASP.NET MVC教程:創(chuàng)建TaskList應用程序
  3. ASP.NET實用技巧
  4. 基于微軟ASP.NET AJAX框架開發(fā)幻燈片播放網頁
責任編輯:楊鵬飛 來源: 博客園
相關推薦

2009-07-27 16:53:15

ASP.NET 2.0

2009-07-22 17:23:03

XmlDataSourASP.NET 2.0

2009-07-30 15:17:16

ASP.NET 2.0

2009-07-21 15:55:59

使用Web PartsASP.NET 2.0

2009-07-22 17:21:27

ASP.NET 2.0

2009-07-28 14:06:28

ASP.NET 2.0

2009-12-14 17:50:45

ASP.NET 2.0

2009-07-30 14:00:21

ASP.NET 2.0

2009-07-30 14:55:43

ASP.NET 2.0

2009-07-21 14:37:13

Profile Pro優(yōu)化ASP.NET 2

2009-05-11 13:48:00

ASP.NET 2.0緩存效率

2009-07-27 09:39:04

SelectMetho

2009-12-11 16:28:23

ASP.NET 2.0

2010-06-25 08:51:46

ASP.NET MVC

2009-07-24 17:15:52

SiteMapData

2009-07-21 15:34:32

ASP.NET 2.0

2009-07-23 14:25:03

ASP.NET 2.0

2009-07-30 15:39:55

ASP.NET 2.0

2009-07-21 15:27:12

ASP.NET 2.0

2009-07-23 16:28:20

URL映射ASP.NET 2.0
點贊
收藏

51CTO技術棧公眾號