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(); }