ASP.NET配置文件是基於XML的文本文件(每個都命名為Web.Config),可以出現在ASP.NET Web應用程序服務器上的任何目錄中。它可以包含標准的XML文檔元素(包括格式正確的標記、注釋、文本、cdata等)。該文件的編輯格式可以為ANSI、UTF-8或Unicode,系統自動檢測編碼。
Web.Cconfig文件中包括一些基本的節,下面分別對這些節的配置進行介紹。
1.配置<authentication>
<authentication>節主要用於配置ASP.NET 2.0身份驗證。在<authentication>節中,主要對mode屬性進行設置,該屬性共提供4個參數,分別為Windows、Forms、PassPort和None。下面分別對這4個參數進行介紹。
(1)Windows:Internet信息服務(IIS)根據應用程序的設置執行身份驗證。在IIS中必須禁止匿名訪問。
(2)Forms:需要工程創建者為用戶提供一個輸入憑據的自定義窗體,然后在應用程序中驗證身份。用戶的憑據標記存儲於Cookie對象中。
(3)PassPort:身份驗證是通過Microsoft的集中身份驗證服務執行的,它為成員站點提供了不同用戶訪問此應用程序的資源。
(4)None:不執行身份驗證。
該元素只能在計算機、站點或應用程序級聲明。<authentication>節必須與<authorization>節配合使用。
例如,下面代碼為<authentication>節基於窗體(Forms)的身份驗證配置站點,當沒有登錄的用戶訪問需要身份驗證的網頁時,網頁自動跳轉到登錄網頁,程序代碼如下:
1 <authentication mode="Forms" > 2 <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/> 3 </authentication>
說明:
元素loginUrl表示登錄網頁的名稱,name表示Cookie名稱。
2.配置<authorization>
<authorization>節用於控制對URL資源的客戶端訪問權限(如允許匿名用戶訪問)。該元素可以在任何級別(計算機、站點、應用程序、子目錄或頁)上聲明,必須與<authentication>節配合使用。
例如,通過配置<deny users="?"/>禁止匿名用戶的訪問,程序代碼如下:
1 <authorization> 2 <deny users="?"/> 3 </authorization> 4 5
用戶可以使用user.identity.name屬性來獲取已經通過驗證的當前用戶名,也可以使用Web.Security.FormsAuthentication.RedirectFromLoginPage方法將已驗證的用戶重定向到用戶請求的頁面。
3.配置<compilation>
<compilation>節用於配置ASP.NET 2.0應用程序的所有編譯設置。<compilation>節主要提供兩個屬性,分別為DefaultLanguage和Debug,其說明如下。
(1)DefaultLanguage:定義了ASP.NET 2.0后台代碼語言,可以設置C#、VB等語言。
(2)Debug:該屬性設置為True時,將啟動aspx調試;設置為False時,可以提高應用程序的運行性能。建議在程序開發調試時,設置為Debug=“True”,交於客戶使用時,設置為Debug=“False”。
4.配置<customErrors>
<customErrors>節用於為ASP.NET 2.0應用程序提供有關自定義錯誤信息的信息。它不適用於XML Web Services中發生的錯誤。<customErrors>節中主要設置mode屬性,此屬性共有3個屬性值,其含義分別如下。
(1)On:一直顯示自定義信息。
(2)Off:一直顯示詳細的ASP.NET 2.0錯誤信息。
(3)RemoteOnly:只對不在本地Web服務器上運行的用戶顯示自定義信息。
例如,通過配置<customErrors>節實現當發生錯誤時,將網頁跳轉到自定義的錯誤頁面。程序代碼如下:
1 <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly"> 2 </customErrors>
說明:
上述代碼中元素defaultRedirect表示自定義的錯誤網頁的名稱。mode元素表示對不在本地Web服務器上運行的用戶顯示自定義(友好的)信息。
5.配置<httpRuntime>
<httpRuntime>節用於配置ASP.NET 2.0 HTTP運行庫設置。該節可以在計算機、站點、應用程序和子目錄級別聲明。
例如,通過對<httpRuntime>節的設置,指定了用戶上傳文件最大為4M,最長時間為60s,最多請求數為100,程序代碼如下:
<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>
6.配置<pages>
<pages>節用於標識特定頁的配置設置(例如,是否啟用會話狀態或視圖狀態,是否檢測用戶的輸入等)。<pages>節可以在計算機、站點、應用程序和子目錄級別聲明。
例如,通過配置<pages>節實現不檢測用戶在瀏覽器輸入的內容中,是否存在潛在的危險數據,在從客戶端回發頁時將檢查加密的視圖狀態,以及驗證視圖狀態是否已在客戶端被篡改。程序代碼如下:
7.配置<sessionState>
<sessionState>節主要用於為當前應用程序配置會話狀態設置(例如,設置是否啟用會話狀態、會話狀態保存位置等)。
SessionState各參數的含義如下。
(1)mode:該參數用於設置存儲會話狀態。狀態包括Off、Inproc、StateServer和SqlServer。Off表示禁用會話狀態,Inproc表示工作進程自身存儲會話狀態,StateServer表示將把會話信息存放在一個單獨的ASP.NET 2.0狀態服務中,SQL Server表示將把會話信息存放在SQL Server數據庫中。
(2)StateConnectionString:該參數用於設置ASP.NET 2.0應用程序存儲遠程會話狀態的服務器名,默認名為本地。
(3)Cookieless:當參數Cookieless的屬性設置為True時,表示不使用Cookie會話標識客戶;反之設置為False時,表示啟動Cookie會話狀態。
(4)SqlConnectionString:該參數用於設置SQL Server數據庫連接。
(5)Timeout:該參數用於設置會話時間,超過該期限,會自動中斷會話,默認設置為20。
例如,下面對<sessionState>節的設置,程序代碼如下:
2 </sessionState>
說明:
mode="InProc"表示在本地儲存會話狀態(也可以選擇儲存在遠程服務器或SAL服務器中或不啟用會話狀態);cookieless="true"表示如果用戶瀏覽器不支持Cookie時啟用會話狀態(默認為False);timeout="20"表示會話可以處於空閑狀態的分鍾數。
8.配置<trace>
<trace>節用於配置ASP.NET 2.0跟蹤服務,主要用來判斷程序出錯的位置。
例如,下面代碼為Web.config中的默認配置:
說明:
上述代碼中,enabled="false"表示不啟用跟蹤,requestLimit="10"表示指定在服務器上存儲的跟蹤請求的數目,pageOutput="false"表示只能通過跟蹤實用工具訪問跟蹤輸出,traceMode="SortByTime"表示以處理跟蹤的順序來顯示跟蹤信息,localOnly="true" 表示跟蹤查看器(trace.axd)只用於宿主Web服務器。
9.自定義Web.Config文件配置
自定義Web.Config文件配置節過程分為兩步,步驟如下。
(1)在配置文件頂部<configSections>和</configSections>標記之間,聲明配置節的名稱和處理該節中配置數據的.NET Framework類名稱。
(2)在<configSections>區域之后,為已聲明的節做實際的配置設置。
例如,下面代碼演示了如何創建一個節存儲數據庫連接字符串:
1 <configuration> 2 <configSections> 3 <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version= 1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 4 </configSections> 5 <appSettings> 6 <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/> 7 </appSettings> 8 <system.web> 9 ..... 10 </system.web> 11 </configuration>