.net基礎學習:ASP.NET的Web.Config檔案中的元素
Web.Config檔案預設格式如下:
像任何*.config檔案一樣,Web.config定義了根級的元素。它能夠包含大量的子元素,用來控制Web應用程式在執行時應該怎樣執行。
Web.config檔案的部分子元素
該元素用於確立自定義名稱/值對,這樣它們可以以程式設計方式讀進記憶體供頁面使用。
該元素可以配置 ASP.NET 使用的安全身份驗證模式,以標識傳入的使用者。
也是和安全相關聯的元素,用於定義哪一個使用者可以訪問Web伺服器上的哪些資源。
該元素用於啟用(或禁用)除錯,並定義由該Web應用程式使用的預設.NET語言,它可以選擇性地定義應該被自動引用的外部.NET程式集。
該元素用於保持在該站點內使用的外部連線字串。
該元素用於準確地告知執行庫如何顯示在Web應用程式工作期間出現的錯誤。
如果在執行請求的過程中出現未處理的錯誤,開發人員通過該節可以配置要顯示的 html 錯誤頁以代替錯誤堆疊跟蹤。
該元素用於對該Web應用程式配置全域性化的各項設定。
該元素用於控制以何種方式和在何處將由.NET執行庫儲存會話狀態資料。
該元素用於對該Web應用程式啟用(或禁用)跟蹤支援。
注 關於Web.config格式的細節請檢視.NET Framework 2.0 SDK文件內的“ASP.NET Settings Schema”話題。
子元素。這個XML實體可以用任何數量的特性進一步限定它的行為,如下所示:
localOnly="true|false"
pageOutput="true|false"
requestLimit="integer"
traceMode="SortByTime|SortByCategory"/>
enabled
指定是否對作為一個整體的應用程式啟用跟蹤(預設設定值為false)。在前一章提到,可以對一個給定的*.aspx檔案使用@Page指令有選擇性地啟用跟蹤
單獨的頁面可以使用指令啟用跟蹤。然而,如果希望在Web應用程式中使所有的頁面都啟用跟蹤功能,只需簡單更新,如下所示:
enabled="true"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
localOnly
指明跟蹤資訊僅在宿主Web伺服器上可見,而在遠端客戶機上不可見(預設設定值為true)
pageOutput
指定應該如何檢視跟蹤輸出
requestLimit
指定將儲存在伺服器上的跟蹤請求的數量,預設值為10。如果達到極限,跟蹤就自動禁用
traceMode
指明跟蹤資訊以其被處理的順序顯示。預設值為SortByTime,但也可進行配置使得它按照種類排序
通過自定義錯誤輸出
元素可以用來自動將所有錯誤重定向到一個自定義的*.htm檔案集中。如果你希望建立一個比CLR提供的預設頁面更使用者友好的錯誤頁面的話,就可以用到它。元素的外觀大體如下所示:
例如元素的用處,假設ASP.NET Web應用程式有兩個*.htm檔案。第一個檔案(genericError.htm)是一個捕獲所有錯誤的頁面。可能這個頁面包含了一個你的公司的標誌圖片,一個傳送電子郵件到系統管理員的連結,還有一封冗長的道歉信。第二個檔案(Error404.htm)是一個自定義的錯誤頁面,它應該僅在執行時探測到錯誤編號404(可怕的“資源沒有發現”錯誤)時出現。現在,如果要確保所有的錯誤被這些自定義頁面處理,可以按如下程式碼所示更新Web.config檔案:
注意,根元素是如何用來為所有未被處理的錯誤指定通用頁面的名字的。一個可能出現在開始標籤中的特性是mode。預設的設定是RemoteOnly,如果HTTP請求來自同一臺作為Web伺服器的機器(這對於想要看細節的開發者來說是非常有幫助的),那麼它指示執行庫不顯示自定義錯誤頁。當設定mode特性為on時,這將導致自定義錯誤對所有機器可見(包括開發工具)。也要注意,元素可以支援許多巢狀元素以指定哪個頁面將用來處理指定的錯誤程式碼。
為了測試這些自定義錯誤重定向,構建一個定義兩個Button部件的*.aspx頁面,然後如下處理這兩個控制元件的Click事件:
private void btnGeneralError_Click(object sender, EventArgs e)
{
// 這將觸發一般錯誤。
throw new Exception("General error...");
}
private void btn404Error_Click(object sender, EventArgs e)
{
// 這將觸發404錯誤(假設沒有名為MyPage.aspx的檔案)。
Response.Redirect("MyPage.aspx");
}
儲存狀態
Web.config檔案最強大的方面是元素。預設情況下,ASP.NET將使用由ASP.NET工作程式(aspnet_wp.exe)承載的內部程式*.dll儲存會話狀態。與其他*.dll一樣,好的一面是可以儘可能快地訪問資訊,而缺點是,如果這個應用程式域崩潰了(不管什麼原因),所有的使用者狀態資料都會被銷燬。此外,當儲存狀態資料為一個程式內*.dll時,你不能與一個聯網的Web farm互動。預設情況下,Web.config檔案的元素如下所示:
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
如果Web應用程式由一個Web伺服器主機承載,那麼這個儲存的預設模式正好合適。然而,在ASP.NET下,你可以指定執行庫讓ASP.NET會話狀態伺服器(aspnet_state.exe)這個代理程式承載會話狀態*.dll。這麼做,能夠從aspnet_wp.exe將*.dll解除安裝到獨有的*.exe中。第一步是啟動aspnet_state.exe Windows服務。只需要簡單地在命令列輸入:
net start aspnet_state
另外,也可以從Control Panel的Administrative Tools資料夾訪問Services applet來啟動aspnet_state.exe。
這個方法的主要優點是當計算機使用屬性視窗啟動時,你能夠通過配置aspnet_state.exe使其自動啟動。無論如何,一旦會話狀態伺服器執行起來,就可以修改Web.config檔案的元素,如下所示:
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
這裡,mode特性已經設定為StateServer。此刻,CLR將在aspnet_state.exe內承載與會話相關的資料。在這種方式下,如果承載Web應用程式的應用程式域崩潰了,會話資料就會儲存下來。還要注意,元素也能支援stateConnectionString特性。預設的TCP/IP地址值(127.0.0.1)指向本地計算機。如果你願意讓.NET執行庫使用網路上另一臺計算機上的aspnet_state.exe服務(又是Web farm),你可以自由更新這個值。
最後,如果要求Web應用程式具有最高階的隔離性和永續性,你可以讓執行庫將所有會話狀態資料儲存到Microsoft SQL Server中。對Web.config檔案做適當的更新非常簡單:
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
然而,在開始嘗試執行相關的Web應用時,先需要確保目標計算機(由sqlConnectionString特性指定)已經得到正確的配置。安裝.NET Framework 2.0 SDK(或Visual Studio 2005)時,有兩個檔案可供選擇,InstallSqlState.sql和UninstallSqlState.sql,預設情況下,它們位於\Microsoft.NET\ Framework\。在目標計算機上,必須使用如SQL Server 查詢分析器(與Microsoft SQL Server一起釋出的)等工具來執行InstallSqlState.sql檔案。
一旦執行了這個SQL指令碼,你將發現已經建立了一個新的SQL Server資料庫(ASPState),它包含大量被ASP.NET執行庫呼叫的儲存過程和一套用來儲存會話資料本身的表(同時,出於交換目的tempdb資料庫已經用一套表更新了)。你可能已猜到,配置Web應用程式將會話資料儲存到SQL Server是所有可能選項中最慢的。這麼做的好處是,使用者資料可以儘可能地持久儲存了(即使Web伺服器重啟了)。
像任何*.config檔案一樣,Web.config定義了根級的
Web.config檔案的部分子元素
該元素用於確立自定義名稱/值對,這樣它們可以以程式設計方式讀進記憶體供頁面使用。
該元素可以配置 ASP.NET 使用的安全身份驗證模式,以標識傳入的使用者。
也是和安全相關聯的元素,用於定義哪一個使用者可以訪問Web伺服器上的哪些資源。
該元素用於啟用(或禁用)除錯,並定義由該Web應用程式使用的預設.NET語言,它可以選擇性地定義應該被自動引用的外部.NET程式集。
該元素用於保持在該站點內使用的外部連線字串。
該元素用於準確地告知執行庫如何顯示在Web應用程式工作期間出現的錯誤。
如果在執行請求的過程中出現未處理的錯誤,開發人員通過該節可以配置要顯示的 html 錯誤頁以代替錯誤堆疊跟蹤。
該元素用於對該Web應用程式配置全域性化的各項設定。
該元素用於控制以何種方式和在何處將由.NET執行庫儲存會話狀態資料。
該元素用於對該Web應用程式啟用(或禁用)跟蹤支援。
注 關於Web.config格式的細節請檢視.NET Framework 2.0 SDK文件內的“ASP.NET Settings Schema”話題。
通過
Web.config檔案中第一個要介紹的方面就是
localOnly="true|false"
pageOutput="true|false"
requestLimit="integer"
traceMode="SortByTime|SortByCategory"/>
enabled
指定是否對作為一個整體的應用程式啟用跟蹤(預設設定值為false)。在前一章提到,可以對一個給定的*.aspx檔案使用@Page指令有選擇性地啟用跟蹤
單獨的頁面可以使用指令啟用跟蹤。然而,如果希望在Web應用程式中使所有的頁面都啟用跟蹤功能,只需簡單更新
enabled="true"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
localOnly
指明跟蹤資訊僅在宿主Web伺服器上可見,而在遠端客戶機上不可見(預設設定值為true)
pageOutput
指定應該如何檢視跟蹤輸出
requestLimit
指定將儲存在伺服器上的跟蹤請求的數量,預設值為10。如果達到極限,跟蹤就自動禁用
traceMode
指明跟蹤資訊以其被處理的順序顯示。預設值為SortByTime,但也可進行配置使得它按照種類排序
通過
例如
注意,根
為了測試這些自定義錯誤重定向,構建一個定義兩個Button部件的*.aspx頁面,然後如下處理這兩個控制元件的Click事件:
private void btnGeneralError_Click(object sender, EventArgs e)
{
// 這將觸發一般錯誤。
throw new Exception("General error...");
}
private void btn404Error_Click(object sender, EventArgs e)
{
// 這將觸發404錯誤(假設沒有名為MyPage.aspx的檔案)。
Response.Redirect("MyPage.aspx");
}
通過
Web.config檔案最強大的方面是
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
如果Web應用程式由一個Web伺服器主機承載,那麼這個儲存的預設模式正好合適。然而,在ASP.NET下,你可以指定執行庫讓ASP.NET會話狀態伺服器(aspnet_state.exe)這個代理程式承載會話狀態*.dll。這麼做,能夠從aspnet_wp.exe將*.dll解除安裝到獨有的*.exe中。第一步是啟動aspnet_state.exe Windows服務。只需要簡單地在命令列輸入:
net start aspnet_state
另外,也可以從Control Panel的Administrative Tools資料夾訪問Services applet來啟動aspnet_state.exe。
這個方法的主要優點是當計算機使用屬性視窗啟動時,你能夠通過配置aspnet_state.exe使其自動啟動。無論如何,一旦會話狀態伺服器執行起來,就可以修改Web.config檔案的
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
這裡,mode特性已經設定為StateServer。此刻,CLR將在aspnet_state.exe內承載與會話相關的資料。在這種方式下,如果承載Web應用程式的應用程式域崩潰了,會話資料就會儲存下來。還要注意,
最後,如果要求Web應用程式具有最高階的隔離性和永續性,你可以讓執行庫將所有會話狀態資料儲存到Microsoft SQL Server中。對Web.config檔案做適當的更新非常簡單:
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
然而,在開始嘗試執行相關的Web應用時,先需要確保目標計算機(由sqlConnectionString特性指定)已經得到正確的配置。安裝.NET Framework 2.0 SDK(或Visual Studio 2005)時,有兩個檔案可供選擇,InstallSqlState.sql和UninstallSqlState.sql,預設情況下,它們位於\Microsoft.NET\ Framework\。在目標計算機上,必須使用如SQL Server 查詢分析器(與Microsoft SQL Server一起釋出的)等工具來執行InstallSqlState.sql檔案。
一旦執行了這個SQL指令碼,你將發現已經建立了一個新的SQL Server資料庫(ASPState),它包含大量被ASP.NET執行庫呼叫的儲存過程和一套用來儲存會話資料本身的表(同時,出於交換目的tempdb資料庫已經用一套表更新了)。你可能已猜到,配置Web應用程式將會話資料儲存到SQL Server是所有可能選項中最慢的。這麼做的好處是,使用者資料可以儘可能地持久儲存了(即使Web伺服器重啟了)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-664049/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux基礎學習——檔案基礎Linux
- 在 ASP.NET 的 Web.config 檔案中註冊使用者控制元件ASP.NETWeb控制元件
- 學習ASP.NET Core Blazor程式設計系列十八——檔案上傳(中)ASP.NETBlazor程式設計
- .net加密web.config檔案加密Web
- WCF中的web.config配置檔案Web
- 學習ASP.NET的流程ASP.NET
- asp.net 中 .ASPX 與.CS檔案的關係ASP.NET
- ASP.NET Core - .NET 6 的入口檔案ASP.NET
- 零基礎學習 Python 之檔案Python
- 【永春】Asp.Net中虛擬檔案系統的使用ASP.NET
- ASP.NET Core 學習筆記 第四篇 ASP.NET Core 中的配置ASP.NET筆記
- 檔案包含-基於Pikachu的學習
- ASP.NET程式安全的基礎知識ASP.NET
- ASP.Net MVC開發基礎學習筆記(1):走向MVC模式ASP.NETMVC筆記模式
- ASP.NET Web Pages基礎知識---從文字檔案中讀取並顯示資料ASP.NETWeb
- ASP.NET MVC系列:web.config中ConnectionString aspnet_iis加密與AppSettings獨立檔案ASP.NETMVCWeb加密APP
- mysql基礎學習之一之建立表所對應的的檔案MySql
- [Python]學習基礎篇:檔案和目錄Python
- Linux基礎學習——檔案與目錄管理Linux
- ASP.NET Core 學習筆記 第五篇 ASP.NET Core 中的選項ASP.NET筆記
- 【.net基礎】--.NET、winform、Asp.Net區別ORMASP.NET
- asp.net網頁中呼叫c#寫的dll檔案ASP.NET網頁C#
- 檔案IO中基礎操作
- .net檔案的建立和web.config 關於資料庫Web資料庫
- 學習ASP.NET Core Blazor程式設計系列二十——檔案上傳(完)ASP.NETBlazor程式設計
- 學習ASP.NET Core Blazor程式設計系列十九——檔案上傳(下)ASP.NETBlazor程式設計
- 學習ASP.NET Core Blazor程式設計系列十七——檔案上傳(上)ASP.NETBlazor程式設計
- 加密(Asp.Net配置檔案的)配置節加密ASP.NET
- java基礎的學習Java
- Asp.net中關於上傳檔案的各項基本操作ASP.NET
- asp.net中引入外部js檔案的中文亂碼問題ASP.NETJS
- ASP.Net MVC開發基礎學習筆記(10):分部檢視PartialViewASP.NETMVC筆記View
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- 學習asp.net比較完整的流程ASP.NET
- 學習ASP.NET的體會(一) (轉)ASP.NET
- ASP.NET基礎概念面試題ASP.NET面試題
- Asp.Net Core 3.1學習-讀取、監聽json配置檔案(7)ASP.NETJSON
- .NET 6學習筆記(7)——ASP.NET Core透過配置檔案啟用HTTPS筆記ASP.NETHTTP