ASP.NET WEBCONFIG一些配置
來源:互聯網
上載者:User
Web.config檔案是一個標準的XML文檔,所有的配置資訊都位於<configuration>標記內。<system.web>標記內則包含了核心ASP.NET配置設定。使用者可以在Visual Studio.NET中開啟Web.config來查看和編輯它的內容,這個檔案中包含了大量的注釋資訊,使用者可以參照學習。下面介紹幾個常用的標記。
1. <appSettings>標記
這個標記用來配置自訂的應用程式設定,比如資料庫連接字串、檔案路徑或存在在應用程式.ini檔案中的任何資訊。使用者可以使用System.Configuration.ConfigurationSettings類在代碼中訪問<appSettings>標記中指定的鍵/值對。
另外,使用者還可以在Web.config檔案的<appSettings>標記中使用file屬性。這個屬性指定了一個設定檔,該檔案提供附加設定或者重寫<appSettings>標記中指定的設定。當使用file屬性指定設定檔時,必須要把<appSettings>作為根節點,而不是<configuration>。
在下面的配置中,我們添加了一個連接字串配置,配置名稱為ConnString,值為“server=localhost;database=test;uid=testing;pwd=test;”。
<appSettings>
<add key="ConnString" value="server=localhost;database=test;uid=testing;pwd=test;" />
</appSettings>
使用者就可以在頁面中使用下面的代碼來訪問新添加的設定。
ConfigurationSettings.AppSettings("ConnString");
remove子項目用來刪除特定的設定;clear子項目用來刪除包含它的appSettings中的所有設定。例如:
<appSettings>
<clear />
</appSettings>
2. <authentication>和<authorization>標記
這兩個標記緊密相關,它們用來設定應用程式的安全性。
<authentication>標記用來定義應用程式使用的驗證方法和參數。它包含一個mode屬性和兩個子標記(<forms>和<passport>)。mode屬性用來控制應用程式的預設身分識別驗證模式,共有4種模式。
Windows:將Windows驗證指定為預設的身分識別驗證模式。當使用以下任意形式的Microsoft Internet資訊服務(IIS)身分識別驗證時使用該模式:基本、簡要、整合的Windows驗證(MTLM/Kerberos)或認證。
Forms:將ASP.NET基於表單的身分識別驗證指定為預設的身分識別驗證模式。
Passport:將Microsoft Passport身分識別驗證指定為預設的身分識別驗證模式。
None:不指定任何身分識別驗證。只有匿名使用者是預期的或者應用程式可以處理事件以提供其自身的身分識別驗證。<forms>子標記用來為基於表單的自訂身分識別驗證配置ASP.NET應用程式。比如指定密碼是明文還是使用散列演算法進行加密,用來在瀏覽器請求之間維持認證的Cookie名字,用於未授權請求的登入URL,以及指定保護層級等。
<authorization>標記用來設定應用程式的授權策略,它控制對URL資源的用戶端訪問。在這個標記下存在兩個子標記:<allow>和<deny>。其中,<allow>用來允許對資源的訪問;<deny>用來拒絕對資源的訪問。
在運行時,ASP.NET將在<authorization>標記中尋找<allow>和<deny>標記,直到它找到適合特定使用者的第一個訪問規則。然後,它根據找到的第一項訪問規則是<allow>還是<deny>規則,來允許或拒絕對URL資源的訪問。Machine.config檔案中的預設身分識別驗證規則是<allow users="*" />,因此除非另行配置,否則在預設情況下會允許訪問。
在下面的樣本中,使用mode屬性指定使用基於表單的身分識別驗證,並在<form>子標記中指定了傳輸來自用戶端的登入資訊的Cookie名稱,以及當初始身分識別驗證失敗時所使用的登入頁的名稱。必須將<authorization>節包含在內才能要求所有使用者進行Forms身分識別驗證,本例中使用<deny users="?" />拒絕對網站的所有匿名使用者存取。
<configuration>
<system.web>
<authentication mode="Forms">
<forms name-"401kApp" loginUrl="/login.aspx"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
3. <customErrors>標記
這個標記用來配置自訂錯誤資訊。例如:
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
<error statusCode="statuscode redirect="url"/>
</customErrors>
該標記中包含一個mode屬性和一個可選屬性defaultRedirect。Mode屬性用來指定如何處理自訂錯誤,具有三個可選值。
On:指定啟用自訂錯誤。如果未指定defaultRedirect,使用者將看到一般性錯誤。
Off:指定禁用自訂錯誤。這時將始終顯示ASP.NET的詳細錯誤資訊頁面。
RemoteOnly:指定僅向遠程用戶端顯示自訂錯誤,並且向本地主機顯示ASP.NET錯誤。這是預設選項。
defaultRedirect屬性指定發生錯誤時鈄顯示的URL。如果未指定defaultRecirect,將顯示一般性錯誤。URL可以是絕對路徑,也可以是路徑。相對URL是相對於指定了defaultRedirect URL的Web.config檔案,而不是相對於發生了錯誤的Web頁。以~開頭的URL(例如~/ErrorPage.htm)表示指定的URL是相對於應用程式的根路徑。
另外,<customError>標記中還包含一個<error>子標記,它用來定義自訂錯誤條件,並且使用者可以使用它指定多個自訂錯誤條件。
下面給出了一個樣本。
<configuration>
<system.web>
<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
4. <identity>標記
這個標記用來控制Web應用程式的應用程式識別碼,它可以在任何層級(電腦、網站、應用程式、子目錄或頁)上聲明。
這個標記中包含一個必選屬性impersonate,它用來指定是否對每個請求使用用戶端類比。
<identity>標記還包含兩個可選屬性:userName和password。它們指定如果impersonate設定為true,則使用使用者名稱和密碼。userName和password以明文形式儲存在設定檔,例如,通過在包含伺服器的域上具有適當憑據的、已經過身分識別驗證的使用者來訪問。為了增強安全性,<identity>標記支援在註冊表中儲存加密userName和password屬性。憑據必須是用Windows 2000和Windows XP資料保護API(DPAPI)加密函數加密的REG_BINARY格式。要加密使用者名稱和密碼,並將它們儲存在註冊表中,請如下設定userName和password。
userName= "registry:HKLM\Software\AspNetProcess,Name"
password= "registry:HKLM\Software\AspNetProcess,Pwd"
字串中位於關鍵字registry之後和逗號之前的部分,表示ASP.NET開啟的登錄機碼的名稱。逗號之後的部分包含一個字串值的名稱,ASP.NET從此名稱中討取憑據。必須有逗號,並且憑據必須儲存在HKLM登錄區中。
在下面的樣本中將用戶端標識類比設定為true。
<configuration>
<system.web>
<identity impers/>
</system.web>
</configuration>
在下面的樣本中指定將加密的使用者名稱和密碼儲存在註冊表中使用者定義的項AspNetIdentity下。
<configuration>
<system.web>
<identity>
userName= "registry:HKLM\Software\AspNetIdentity,Name"
password= "registry:HKLM\Software\AspNetIdentity,Pwd"
</identity>
<system.web>
</configuration>
5. <sessionState>標記
這個標記為當前應用程式配置工作階段狀態設定。該標記中包含以下屬性(其中,mode為必選屬性,其他為可選屬性)。
Mode:該屬性指定在哪裡儲存工作階段狀態。可選的已發值有Off(未啟用工作階段狀態)、Inproc(在本機存放區工作階段狀態)、StateServer(在遠端電腦上儲存工作階段狀態)和SQLServer(在SQL Server上儲存工作階段狀態)。
Cookieless:該屬性指定是否使用Cookie。預設值為false,表示使用Cookie。
Timeout:該屬性指定在放棄一個會話前,該會話可以處於空閑狀態的分鐘數。預設值為20。
stateConnectionString:該屬性指定遠程儲存工作階段狀態的伺服器名稱和連接埠。例如“tcpip=127.0.0.1:42424”。當mode為StateServer時該屬性是必需的。
sqlConnectionString:該屬性為SQL Server指定連接字串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。當mode為SQL Server時該屬性是必需的。
stateNetWorkTimeout:該屬性在wgetStateServer模式儲存工作階段狀態時,指定在放棄會話之前,Web伺服器和狀態伺服器之間 的TCP/IP網路連接閒置時間(以秒為單位)。預設值為10。
在下面的樣本中指定在本機存放區工作階段狀態,不使用Cookie,並且會話逾時時間為20分鐘。
<configuration>
<system.web>
<sessionState mode="Inproc" cookieless="true" timeout="20"/>
</sessionState>
</system.web>
</configuration>
6. <trace>標記
這個標記用來配置ASP.NETTracing Service,它包含以下屬性。
enabled:該屬性指定是否為應用程式啟用跟蹤。預設值為false(不啟用跟蹤)。
localOnly:該屬性指定跟蹤查看器(trace.axd)是否只用於宿主Web伺服器。預設值為true(只用於宿主Web伺服器)。當為false時,跟蹤查看器可用於任何電腦。
pageOutput:該屬性指定在每一頁的結尾是否顯示跟蹤輸出。預設值為false(不顯示,只能通過跟蹤工具訪問跟蹤輸出)。
requestLimit:該屬性在伺服器上儲存的跟蹤請求的數目。預設值為10,如果達到該限制,則自動取消跟蹤。
traceMode:該屬性指定是否以處理跟蹤的順序來顯示跟蹤資訊。預設值為SortByTime(按處理順序顯示);如果屬性值為SortByCategory,則表示根據使用者定義的類別按字母順序顯示跳躍資訊。
下面給出一個樣本。
<configuration>
<system.web>
<trace enabled="false" pageOutput="true" requestLimit="15"/>
</system.web>
</configuration> http://hi.baidu.com/xiaojiu/blog/item/e2502df5cbf6062dbc3109ee.html