來源:http://www.cnblogs.com/kevin-moon/archive/2009/01/22/1379789.html
ASP.NET中的配置文件由web.config和machine.config構成。
每當我們安裝net framework的時候,machine.config文件都會被創建到"C:/WINDOWS/Microsoft.NET/Framework/[Version]/CONFIG"文件夾下,並且每個Web應用程序都會繼承這些配置信息,同時我們也可以通過Web應用程序中的web.config文件來覆蓋它。
在Web應用程序中,我們依然可以在每個子文件夾中去建立web.config,並用它來覆蓋上層的配置。如下圖:
Web.config中常用的配置信息
<authentication>
被用於,當客戶端向服務器發送請求的時候,服務器需要去驗證客戶端的身份,我們可以設定"None"、"Forms"、"Windows"、"Passport"這四種驗證方式。
1、如果你不需要驗證身份,可以設定:<anthentication mode="none" >
2、一般情況下,我們使用"windows"驗證,<anthentication mode="Windows" >,這種驗證方式是通過IIS來處理的,IIS給我們下面幾種驗證模式去選擇,
3、表單驗證,這種驗證方式是Web應用程序來處理。
<anthentication mode="Forms" >
<Forms name = "form1" LoginUrl = "login.aspx">
</anthentication>
4、Passport驗證,客戶端通過Microsoft的Passport數據庫來驗證的,優點是你可以擁有一個已存在的驗證信息,而不需要去做註冊用戶名這些動作,不過它是收費的...!如果你要用這種驗證方式,你需要在你的電腦上安裝Passport Software Development Kit。
<anthentication mode="Passport" >
<Passport redirectUrl = "interanlUrl">
</anthentication>
<authorization>
控制客戶端對服務器URL的訪問
<anthorization>
<allow users = "" roles="" verbs = "">
<deny users = "" roles="" verbs = "">
</anthorization>
users:用戶名列表,roles:角色列表,verbs:請求的方式(GET,POST)
<compilation>
配置 ASP.NET 用於編譯應用程序的所有編譯設置。其中最常用的就是debug(是否應編譯調試二進制文件)和defaultLanguage(在動態編譯文件中使用的默認編程語言),
<customerErrors>
設置Web應用程序的異常信息,當應用程序出現異常的時候,可以通過設定這個來給用戶一個友好的異常信息。
<customerErrors defaultRedirect="..." mode = "on">
<error statusCode="403" redirectUrl="..." />
<error statusCode="404" redirectUrl="..." />
</customerErrors>
"on":指定啓用自定義錯誤。如果未指定 defaultRedirect,用戶將看到一般性錯誤。
"off":指定禁用自定義錯誤。這允許顯示標準的詳細錯誤。
"remoteOnly":指定僅向遠程客戶端顯示自定義錯誤並且向本地主機顯示 ASP.NET 錯誤。這是默認值。
<globalization>
用於設置應用程序的編碼格式和語言環境
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
<httpRuntime>
用於設定應用程序運行時的一些信息
<httpRuntime appRequestQueueLimit="50" executionTimeout="300" />
"appRequestQueueLimit":服務器中請求隊列的最大限制數量,如果超過這個最大值,服務器會返回503錯誤(服務器太忙)
"executionTimeout":處理一個請求的超時限制。
<trace>
跟蹤應用程序的執行,我們有兩種跟蹤級別:頁面級別和應用程序級別,應用程序級別對所有的頁面都會進行跟蹤,如果pageOutput="true",那麼跟蹤信息將顯示在每個頁面的底部,我們也可以到應用程序的根目錄下,找trace.axd去看跟蹤日誌。
<trace enabled="false" requestLimit="10" pageOutput="true" traceMode="sortBytime" localOnly ="true" />
如果我們只希望在頁面級別上面的話,只需要在每頁上設置trace="true"就可以了。
<identity>
配置 Web 應用程序的標識
<identity impersonate="false" username="..." password="..." />
"impersonate":是否對每個請求使用客戶端模擬。
<sessionState>
設置服務器如何去保存session,session有五種方式:
1、Inpro:默認的方式,在應用程序的進程上保存session。
2、StateServer:將session保存在aspnet_state進程上面,它獨立與應用程序進程,可以在同一服務器也可以用專門一臺服務器。
3、SQLServer:將session保存在SqlServer數據庫中,不過在使用它之前需要安裝InstallSQLState.sql腳本,
4、自定義的保存方式,通過重寫SessionStateStoreProviderBase基類來實現自己的保存方式,
5、不啓用Session
<appSetting>
設置一些需要在應用程序中用到鍵/值信息
<appSetting>
<add key="..." value="..." />
</appSetting>
加密配置文件
當你的配置文件中有一些敏感信息的時候,你也許希望對其中的內容進行加密。
ASP.NET中有兩種支持的加密方式:RSA和DPAPI。同時我們對如何進行加密,也有兩種方式。
1、程序方式
Configuration myConfig = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection mySettings = myConfig.GetSection("mySection");
if (mySettings.SectionInformation.IsProtected)
{
mySettings.SectionInformation.UnprotectSection();
}
else
{
mySettings.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); ;
}
myConfig.Save();
2、命令行的方式ConfigurationSection mySettings = myConfig.GetSection("mySection");
if (mySettings.SectionInformation.IsProtected)
{
mySettings.SectionInformation.UnprotectSection();
}
else
{
mySettings.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); ;
}
myConfig.Save();
我們可以用命令行工具aspnet_regiis.exe去對config文件進行加密,當你使用這種方式進行加密的時候,你需要去設置一些參數:
"-pe":config文件中的配置節
"-app":應用程序的相對路徑
"-prov":加密的提供程序
例如,我們對http://localhost/MyApp下的配置文件進行加密
放假咯!過年咯!