返回首頁
當前位置: 主頁 > 網絡編程 > .Net實例教程 >

ASP.NET-錯誤處理

時間:2020-01-16 16:02來源:知行網www.f1globe.com 編輯:麥田守望者

 ASP.NET中的錯誤處理包括三個方面:

  • 跟蹤 -在頁面級別或應用程序級別跟蹤程序執行。

  • 錯誤處理 -在頁面級別或應用程序級別處理標準錯誤或自定義錯誤。

  • 調試 -逐步執行程序,設置斷點以分析代碼

在本章中,我們將討論跟蹤和錯誤處理,在本章中,我們將討論調試。

要理解這些概念,請創建以下示例應用程序。它具有標簽控件,下拉列表和鏈接。下拉列表將加載著名報價的數組列表,并且所選報價顯示在下面的標簽中。它還具有指向不存在的鏈接的超鏈接。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="errorhandling._Default" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml" >     <head runat="server">       <title>          Tracing, debugging and error handling       </title>    </head>        <body>       <form id="form1" runat="server">                 <div>             <asp:Label ID="lblheading" runat="server" Text="Tracing, Debuggin  and Error Handling">             </asp:Label>                          <br /> <br />                          <asp:DropDownList ID="ddlquotes" runat="server" AutoPostBack="True"  onselectedindexchanged="ddlquotes_SelectedIndexChanged">             </asp:DropDownList>                          <br /> <br />                          <asp:Label ID="lblquotes" runat="server">             </asp:Label>                          <br /> <br />                          <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="mylink.htm">Link to:</asp:HyperLink>          </div>                 </form>    </body>     </html>

文件后面的代碼:

public partial class _Default : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {       if (!IsPostBack)       {          string[,] quotes =           {             {"Imagination is more important than Knowledge.", "Albert Einsten"},             {"Assume a virtue, if you have it not" "Shakespeare"},             {"A man cannot be comfortable without his own approval", "Mark Twain"},             {"Beware the young doctor and the old barber", "Benjamin Franklin"},             {"Whatever begun in anger ends in shame", "Benjamin Franklin"}          };                    for (int i=0; i<quotes.GetLength(0); i++)             ddlquotes.Items.Add(new ListItem(quotes[i,0], quotes[i,1]));       }    }        protected void ddlquotes_SelectedIndexChanged(object sender, EventArgs e)    {       if (ddlquotes.SelectedIndex != -1)       {          lblquotes.Text = String.Format("{0}, Quote: {1}", ddlquotes.SelectedItem.Text, ddlquotes.SelectedValue);       }    } }

追蹤

要啟用頁面級跟蹤,需要修改Page指令并添加Trace屬性,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"    Inherits="errorhandling._Default" Trace ="true" %>

現在,當您執行文件時,您將獲得跟蹤信息:

跟蹤信息

它在頂部提供以下信息:

  • 會話ID
  • 狀態碼
  • 請求時間
  • 請求類型
  • 請求和響應編碼

每次請求頁面時從服務器發送的狀態代碼都會顯示錯誤的名稱和時間(如果有)。下表顯示了常見的HTTP狀態代碼:

描述
信息性(100-199)
100 繼續
101 交換協議
成功(200-299)
200
204 無內容
重定向(300-399)
301 永久移動
305 使用代理服務器
307 臨時重定向
客戶端錯誤(400-499)
400 錯誤的請求
402 需要付款
404 未找到
408 請求超時
417 期望失敗
服務器錯誤(500-599)
500 內部服務器錯誤
503 暫停服務
505 不支援HTTP版本

在頂級信息下,有“跟蹤日志”,其中提供了頁面生命周期的詳細信息。它提供自頁面初始化以來經過的時間(以秒為單位)。

跟蹤信息2

下一部分是控件樹,它以分層方式列出頁面上的所有控件:

跟蹤信息3

會話和應用程序狀態摘要,cookie和標頭集合中的最后一個,其后是所有服務器變量的列表。

跟蹤對象允許您將自定義信息添加到跟蹤輸出。它有兩種方法可以實現此目的:Write方法和Warn方法。

更改Page_Load事件處理程序以檢查Write方法:

protected void Page_Load(object sender, EventArgs e) {    Trace.Write("Page Load");        if (!IsPostBack)    {       Trace.Write("Not Post Back, Page Load");       string[,] quotes =        .......................    } }

運行觀察效果:

跟蹤信息4

為了檢查Warn方法,讓我們在所選的索引已更改事件處理程序中強制輸入一些錯誤代碼:

try {    int a = 0;    int b = 9 / a; }catch (Exception e) {    Trace.Warn("UserAction", "processing 9/a", e); }

Try-Catch是一種C#編程結構。try塊包含可能會或可能不會產生錯誤的任何代碼,并且catch塊會捕獲錯誤。程序運行時,它將在跟蹤日志中發送警告。

跟蹤信息5

應用程序級別跟蹤適用于網站中的所有頁面。通過將以下代碼行放入web.config文件中來實現此功能:

<system.web>    <trace enabled="true" /> </system.web>

錯誤處理

盡管ASP.NET可以檢測到所有運行時錯誤,但是仍然可能存在一些細微的錯誤。通過跟蹤觀察錯誤是給開發人員的,而不是給用戶的。

因此,要攔截這種情況,可以在應用程序的web.config文件中添加錯誤處理設置。它是應用程序范圍的錯誤處理。例如,您可以在web.config文件中添加以下行:

<configuration>    <system.web>           <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">          <error statusCode="403" redirect="NoAccess.htm"	/>          <error statusCode="404" redirect="FileNotFound.htm" />       </customErrors>           </system.web> <configuration>

<customErrors>部分具有可能的屬性:

  • 模式:啟用或禁用自定義錯誤頁面。它具有三個可能的值:

    • :顯示自定義頁面。
    • :顯示ASP.NET錯誤頁面(黃色頁面)
    • remoteOnly:向客戶端顯示自定義錯誤,在本地顯示ASP.NET錯誤。
  • defaultRedirect:包含未處理錯誤時要顯示的頁面的URL。

要為不同類型的錯誤放置不同的自定義錯誤頁面,請使用<error>子標記,其中根據錯誤的狀態碼指定了不同的錯誤頁面。

為了實現頁面級錯誤處理,可以修改Page指令:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"    Inherits="errorhandling._Default" Trace ="true" ErrorPage="PageError.htm" %>

因為ASP.NET調試本身就是一個重要的主題,所以我們將在下一章中單獨討論它。

------分隔線----------------------------
標簽(Tag):
------分隔線----------------------------
推薦內容
  • ASP.NET-調試

    通過調試,開發人員可以逐步查看代碼的工作方式,變量的值如何更改,對象的創建和銷毀...

  • ASP.NET-錯誤處理

    ASP.NET中的錯誤處理包括三個方面: 跟蹤 -在頁面級別或應用程序級別跟蹤程序執行。 ...

  • ASP.NET-個性化

    網站設計用于用戶的反復訪問。 個性化允許站點記住用戶身份和其他信息詳細信息,并為...

  • ASP.NET-自定義控件

    ASP.NET允許用戶創建控件。 這些用戶定義的控件分為以下幾類: 用戶控件 自定義控件 ...

  • ASP.NET-數據綁定

    每個ASP.NET Web表單控件都從其父Control類繼承DataBind方法,這使它具有將數據綁定到...

  • ASP.NET-數據源

    數據源控件與數據綁定控件進行交互,并隱藏復雜的數據綁定過程。 這些工具可將數據提...

猜你感興趣
99久久免费高清热精品