Asp.net Web.Config - 配置元素customErrors


  Asp.net配置文件的配置方式,其實在MSDN里面是寫得最清楚的了。可惜之前一直未曾了解到MSDN的強大。

  先貼個地址:http://msdn.microsoft.com/zh-cn/library/dayb112d(v=vs.80).aspx,然后逐個分析。我希望自己能夠從頭到尾認真學完這系列東西。為了不至於讓自己太早放棄,我決定從自己用過的配置文件學起,然后逐漸接觸那些比較生疏,和少用的。

一、customErrors 元素

屬性 說明

defaultRedirect

指定出錯時將瀏覽器定向到的默認 URL。如果未指定該屬性,則顯示一般性錯誤。

可選的屬性。

URL 可以是絕對的(如 www.contoso.com/ErrorPage.htm)或相對的。相對 URL(如 /ErrorPage.htm)是相對於為該屬性指定 URL 的 Web.config 文件,而不是相對於發生錯誤的網頁。以字符 (~) 開頭的 URL(如 ~/ErrorPage.htm)表示指定的 URL 是相對於應用程序的根路徑。

mode

指定是啟用或禁用自定義錯誤,還是僅向遠程客戶端顯示自定義錯誤。

必選的屬性。

可選值以及說明:

On        指定啟用自定義錯誤。如果未指定 defaultRedirect,用戶將看到一般性錯誤。

Off        指定禁用自定義錯誤。這允許顯示標准的詳細錯誤。

RemoteOnly  指定僅向遠程客戶端顯示自定義錯誤並且向本地主機顯示 ASP.NET 錯誤。這是默認值。

默認值為 RemoteOnly。

  2、位置

  customerErrors -> configuration-> system.web  //該元素放於<system.web>下的<configuration>節點下

  3、子元素

元素 說明

error

指定給定 HTTP 狀態代碼的自定義錯誤頁。

可選的元素。

錯誤標記可以出現多次。子標記的每一次出現均定義一個自定義錯誤條件。

   4、配置示例:

<configuration>
  <system.web>
    <customErrors defaultRedirect="defaultError.htm"  //發生錯誤時,重定向到defaultError.htm
                  mode="RemoteOnly">           //僅僅對本地用戶顯示詳細錯誤信息
      <error statusCode="500"               //針對500錯誤,跳轉到500Error.htm
             redirect="500Error.htm"/>
    </customErrors>
  </system.web>
</configuration>

  5、配置節處理程序

  該配置節點對應Asp.net中的配置節類為:

  System.Web.Configuration.CustomErrorsSection

  來看看在類的主要公共屬性:

屬性 說明
DefaultRedirect 獲取或設置重定向的默認 URL。
ElementInformation  獲取包含 ConfigurationElement 對象的不可自定義的信息和功能的 ElementInformation 對象。 (從 ConfigurationElement 繼承。)
Errors 獲取 CustomError 對象的集合,也就是其下面的<error>配置節。
LockAllAttributesExcept  獲取被鎖定的屬性的集合。 (從 ConfigurationElement 繼承。)
LockAllElementsExcept  獲取被鎖定的元素的集合。 (從 ConfigurationElement 繼承。)
LockAttributes  獲取被鎖定的屬性的集合。 (從 ConfigurationElement 繼承。)
LockElements  獲取被鎖定的元素的集合。 (從 ConfigurationElement 繼承。)
LockItem  獲取或設置一個值,該值指示是否已鎖定該元素。 (從 ConfigurationElement 繼承。)
Mode 獲取或設置錯誤顯示模式。
SectionInformation  獲取一個 SectionInformation 對象,該對象包含 ConfigurationSection 對象的不可自定義的信息和功能。 (從 ConfigurationSection 繼承。)

  下面以程序示例如何在程序中讀取和設置配置節:

        public ActionResult Index()
        {
            //<customErrors defaultRedirect="defaultError.htm" mode="Off">
            //  <error statusCode="500" redirect="500.htm"/>
            //</customErrors>

            //CustomErrorsSection customErrorsSection = ConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection;    //這樣獲取也可以,但是要注意里面的路徑的寫法
            CustomErrorsSection CES = (CustomErrorsSection)WebConfigurationManager.OpenWebConfiguration("/").GetSection("system.web/customErrors");
            Response.Write(CES.DefaultRedirect);    //輸出 defaultError.htm
            CustomErrorsMode mode = CES.Mode;
            Response.Write(mode);       //輸出 Off

            CustomError CE = CES.Errors[0]; //獲取其下的第一個子<error>節點
            Response.Write(CE.StatusCode);  //輸出 500
            Response.Write(CE.Redirect);    //輸出 500.htm

            ElementInformation EleInfo = CES.ElementInformation;    //元素信息
            Response.Write(EleInfo.LineNumber);     //輸出 14 恰好是customErrors所在Web.Config的行號

            System.Configuration.Configuration c = CES.CurrentConfiguration;   //當前Configuration對象的引用
            Response.Write(CES.IsReadOnly());     //輸出 False 指示該節點是否為只讀
            Response.Write(CES.LockItem);         //輸出 False 是否已鎖定該元素
            Response.Write(CES.RedirectMode);     //輸出 ResponseRedirect 一個枚舉  將用戶重定向到自定義錯誤頁面時,是否應該更改請求的URL

            SectionInformation SI = CES.SectionInformation;
            Response.Write(SI.Name);     //輸出 customErrors

            return View();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM