asp教程.net web.config 設定檔節點說明
web.config檔案是一個xml文字檔,它用來儲存 asp.net教程 web 應用程式的配置資訊(如最常用的設定asp.net web 應用程式的身分識別驗證方式),它可以出現在應用程式的每一個目錄中。當你通過vb.net建立一個web應用程式後,預設情況下會在根目錄自動建立一個預設的 web.config檔案,包括預設的配置設定,所有的子目錄都繼承它的配置設定。如果你想修改子目錄的配置設定,你可以在該子目錄下建立一個web.config檔案。它可以提供除從父目錄繼承的配置資訊以外的配置資訊,也可以重寫或修改父目錄中定義的設定。 在運行時對web.config檔案的修改不需要重啟服務就可以生效(註:<processmodel> 節例外)。當然web.config檔案是可以擴充的。你可以自訂新配置參數並編寫配置節處理常式以對它們進行處理。
web.config檔案是一個xml檔案,它的根結點是<configuration>,在<configuration>節點下的常見子節點有:<configsections>、<apps教程ettings>、<connectionstrings> 和<system.web>。其中<appsettings>節點主要用於配置一些網站的應用配置資訊,而<connectionstrings>節點主要用於配置網站的資料庫教程連接字串資訊。
<system.web>節點主要是網站運行時的一些配置,它的常見節點有如下:
<appsettings>節點
<appsettings>節點主要用來儲存asp.net應用程式的一些配置資訊,比如上傳檔案的儲存路徑等,以下是一個例子:
1.<appsettings>
2. <!--允許上傳的圖片格式類型-->
3. <add key="imagetype" value=".jpg;.bmp;.gif;.png;.jpeg"/>
4. <!--允許上傳的檔案類型-->
5. <add key="filetype" value=".jpg;.bmp;.gif;.png;.jpeg;.pdf;.zip;.rar;.xls;.doc"/>
6.</appsettings>
對於<appsettings>節點中的值可以按照key來進行訪問,以下就是一個讀取key值為“filetype”節點值的例子:
1.string filetype=configurationmanager.appsettings["filetype "];
<connectionstrings>節點
<connectionstrings> 節點主要用於設定資料庫串連的,我們可以<connectionstrings>節點中增加任意個節點來儲存資料庫連接字串,將來在代碼中通過代碼的方式動態擷取節點的值來執行個體化資料庫連接對象,這樣一旦部署的時候資料庫連接資訊發生變化我們僅需要更改此處的配置即可,而不必因為資料庫連接資訊的變化而需要改動程式碼和重新部署。
<compilation>節點
<compilation>節點配置 asp.net 使用的所有編譯設定。預設的debug屬性為“true”,即允許調試,在這種情況下會影響網站的效能,所以在程式編譯完成交付使用之後應將其設為“false”。
<authentication>節點
設定asp.net身分識別驗證模式,有四種身分識別驗證模式,它們的值分別如下:
mode 說明
windows 使用windows身分識別驗證,適用於域使用者或者區域網路使用者。
forms 使用表單驗證,依靠網站開發人員進行身分識別驗證。
passport 使用微軟提供的驗證服務進行身分識別驗證。
none 不進行任何身分識別驗證。
<authentication>節點
<authentication>節點控制使用者對網站、目錄或者單獨頁的訪問,必須配合<authentication>節點一起使用。
<customerrors>節點
<customerrors> 節點用於定義一些自訂錯誤資訊的資訊。此節點有mode和defaultredirect兩個屬性,其中defaultredirect屬性是一個可選屬性,表示應用程式發生錯誤時重新導向到的預設url,如果沒有指定該屬性則顯示一般性錯誤。mode屬性是一個必選屬性,它有三個可能值,它們所代表的意義分別如下:
mode 說明
on 表示在本地和遠端使用者都會看到自訂錯誤資訊。
off 禁用自訂錯誤資訊,本地和遠端使用者都會看到詳細的錯誤資訊。
remoteonly 表示本機使用者將看到詳細錯誤資訊,而遠端使用者將會看到自訂錯誤資訊。
這裡有必要說明一下本機使用者和遠端使用者的概念。當我們訪問asp.net應用程時所使用的機器和發布asp.net應用程式所使用的機器為同一台機器時成為本機使用者,反之則稱之為遠端使用者。在開發調試階段為了便於尋找錯誤mode屬性建議設定為off,而在部署階段應將mode屬性設定為on或者 remoteonly,以避免這些詳細的錯誤資訊暴露了程式碼細節從而引來駭客的入侵。
<error>子節點
在<customerrors> 節點下還包含有<error>子節點,這個節點主要是根據伺服器的http錯誤狀態碼而重新導向到我們自訂的錯誤頁面,注意要使<error>子節點下的配置生效,必須將<customerrors>節點節點的mode屬性設定為“on”。下面是一個例子:
1.<customerrors mode="on" defaultredirect="genericerrorpage.htm">
2. <error statuscode="403" redirect="403.htm" />
3. <error statuscode="404" redirect="404.htm" />
4.</customerrors>
在上面的配置中如果使用者訪問的頁面不存在就會跳轉到404.htm頁面,如果使用者沒有許可權訪問請求的頁面則會跳轉到403.htm頁面,403.htm和404.htm頁面都是我們自己添加的頁面,我們可以在頁面中給出友好的錯誤提示。
<httpruntime>節點
<httpruntime>節點用於對 asp.net http 運行庫設定。該節可以在電腦、網站、應用程式和子目錄層級聲明。
例如下面的配置控制使用者最大能上傳的檔案為40m(40*1024k),最大逾時時間為60秒,最大並發請求為100個。
<httpruntime maxrequestlength="40960" executiontimeout="60" apprequestqueuelimit="100"/>
<pages>節點
<pages>節點用於表示對特定頁設定,主要有三個屬性,分別如下:
屬性名稱 說明
buffer 是否啟用了 http 響應緩衝。
enableviewstatemac 是否應該對頁的檢視狀態運行電腦身分識別驗證檢查 (mac),以放置使用者篡改,預設為false,如果設定為true將會引起效能的降低。
validaterequest 是否驗證使用者輸入中有跨網站指令碼攻擊和sql注入式漏洞攻擊,預設為true,如果出現匹配情況就會發 httprequestvalidationexception 異常。對於包含有線上文字編輯器頁面一般自行驗證使用者輸入而將此屬性設為false。
下面就是一個配置節點的例子:
1.<pages buffer="true" enableviewstatemac="true" validaterequest="false"/>
<sessionstate>節點
<sessionstate>節點用於配置當前asp.net應用程式的工作階段狀態配置。以下就是一個常見配置:
1.<sessionstate cookieless="false" mode="inproc" timeout="30" />
上面的節點配置是設定在asp.net應用程式中啟用cookie,並且指定工作階段狀態模式為在進程中儲存工作階段狀態,同時還指定了會話逾時為30分鐘。
<sessionstate>節點的mode屬性可以是以下幾種值之一:
屬性值 說明
custom 使用自訂資料來儲存工作階段狀態資料。
inproc 預設值。由asp.net輔助進程來儲存工作階段狀態資料。
off 禁用工作階段狀態。
sqlserver 使用進程外sql server資料庫儲存工作階段狀態資料。
stateserver 使用進程外 asp.net 狀態服務儲存狀態資訊。
一般預設情況下使用inproc模式來儲存工作階段狀態資料,這種模式的好處是存取速度快,缺點是比較佔用記憶體,所以不宜在這種模式下儲存大型的使用者會話資料。
<globalization>節點:
用於配置應用程式的全球化設定。此節點有幾個比較重要的屬性,分別如下:
屬性名稱 說明
fileencoding 可選屬性。設定.aspx、.asmx 和 .asax 檔案的儲存編碼。
requestencoding 可選屬性。設定用戶端請求的編碼,預設為utf-8.
responseencoding 可選屬性。設定伺服器端響應的編碼,預設為utf-8.
以下就是asp.net應用程式中的預設配置:
1.<globalization fileencoding="utf-8" requestencoding="utf-8" responseencoding="utf-8"/>
自訂web.config檔案配置節過程分為兩步。 一是在在設定檔頂部 <configsections> 和 </configsections>標記之間聲明配置節的名稱和處理該節中配置資料的 .net framework 類的名稱。 二是在 <configsections> 地區之後為聲明的節做實際的配置設定。 樣本:建立一個節儲存資料庫連接字串 <configuration> <configsections> <section name="appsettings" type="system.configuration.namevaluefilesectionhandler, system, version=1.0.3300.0, culture=neutral, publickeytoken=b77a5c561934e089"/> </configsections> <appsettings> <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/> </appsettings> <system.web> ...... </system.web> </configuration>