1. 程式人生 > >【Asp.net】—web.config配置詳解

【Asp.net】—web.config配置詳解

前言

   小編最近這一段時間在學習Asp.net視訊,在視訊中,當每一次通過.NET新建一個Web應用程式後,預設情況下會在根目錄自動建立一個預設的Web.config檔案。那麼這個Web.config檔案到底是一個什麼東東呢,為什麼每一次都會自動建立一個Web.config檔案呢,並且web.config檔案中有很多個節點,每一個節點都有代表什麼含義呢,讓我們一起來了解一下吧。

敘述

What(Web.config)

    Web.config檔案是一個XML文字檔案,它用來儲存ASP.NETWeb 應用程式的配置資訊(如最常用的設ASP.NETWeb 應用程式的身份驗證方式),它可以出現在應用程式的每一個目錄中。當你通過.NET新建一個Web應用程式後,預設情況下會在根目錄自動建立一個預設的Web.config檔案,包括預設的配置設定,所有的子目錄都繼承它的配置設定。如果你想修改子目錄的配置設定,你可以在該子目錄下新建一個Web.config檔案。它可以提供除從父目錄繼承的配置資訊以外的配置資訊,也可以重寫或修改父目錄中定義的設定。

Why

作用:用來儲存ASP.NETWeb 的配置資訊

優點:修改不需要重啟服務就可以生效

  How(配置檔案)

(一).Web.Config是以XML檔案規範儲存,配置檔案分為以下格式 

 1.配置節處理程式宣告 
特點:位於配置檔案的頂部,包含在 <configSections> 標誌中。 
 2.特定應用程式配置 
特點: 位於 <appSetting> 中。可以定義應用程式的全域性常量設定等資訊. 對一些不確定設定,還可以讓使用者根據自己實際情況自己設定 。
 3.配置節設定 
特點: 位於 <system.Web> 節中,控制Asp.net執行時的行為. 
 4.配置節組 
特點: 用 <sectionGroup> 標記,可以自定義分組,可以放到 <configSections> 內部或其它 <sectionGroup> 標記的內部. 

(二)配置節中的每一個小節的含義

1、<configuration> 節 
作用:根元素,其它節都是在它的內部. 
2、<authentication> 節

作用:配置ASP.NET身份驗證支援(為Windows、Forms、PassPort、None四種)。該元素只能在計算機、站點或應用程式級別宣告。 元素必需與 節配合使用。
示例:

<authentication   mode= "Forms "> 
      <forms   name= ".aspnot" loginUrl= "Login.aspx " protection= "All " timeout= "30 "/> 
</authentication> 

注:

(1)mode元素中的Windows: 使用IIS驗證方式 ;Forms: 使用基於窗體的驗證方式 ;Passport: 採用Passport   cookie驗證模式 ;None: 不採用任何驗證方式 

(2)裡面內嵌forms節點的屬性涵義: 
I.Name:  指定完成身份驗證的cookie的名稱. 
II.LoginUrl:  如果未通過驗證或超時後重定向的頁面URL,一般為登入頁面,讓使用者重新登入 
III.Protection:  指定 cookie資料的保護方式. 可設定為: All   None   Encryption   Validation四種保護方式 

  a.All表示加密資料,並進行有效性驗證兩種方式 
  b.None表示不保護Cookie. 
  c.Encryption表示對Cookie內容進行加密 
  d.validation表示對Cookie內容進行有效性驗證 
(3) timeOut:   指定Cookie的失效時間.   超時後要重新登入. 

3、<authorization>節
作用:控制對 URL 資源的客戶端訪問(如允許匿名使用者訪問)。該節可以在任何級別(計算機、站點、應用程式、子目錄或頁)上宣告。必需與 節配合使用。
示例:
以下示例禁止匿名使用者的訪問

 <authorization>
      <deny users="?"/>
 </authorization>
注:你可以使用user.identity.name來獲取已經過驗證的當前的使用者名稱;可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法將已驗證的使用者重定向到使用者剛才請求的頁面.

4、<compilation>節
作用:配置ASP.NET使用的所有編譯設定。預設的debug屬性為“True”.在程式編譯完成交付使用之後應將其設為"False"

defaultLanguage: 定義後臺程式碼語言,可以選擇C#和VB.net兩種語言. 

debug : 為true時,啟動aspx除錯為false不啟動aspx除錯,因而可以提高應用程式執行 
時的效能。

示例:

 <compilation defaultLanguage ="C#" debug="true" targetFramework="4.0" />
5、<customErrors> 節
作用:為ASP.NET應用程式提供有關自定義錯誤資訊的資訊。它不適用於 XML Web services 中發生的錯誤。

示例:

<customErrors mode= "RemoteOnly " defaultRedirect= "error.aspx " >
<error   statusCode= "440 "   redirect= "err440page.aspx "/> 
<error   statusCode= "500 "   redirect= "err500Page.aspx "/> 
</customErrors>

注:

(1)mode元素: 具有On,Off,RemoteOnly   3種狀態。On表示始終顯示自定義的資訊;  Off表示始終顯示詳細的asp.net錯誤資訊;   RemoteOnly表示只對不在本地Web伺服器上執行的使用者顯示自定義資訊. 
(2)defaultRedirect元素表示自定義的錯誤網頁的名稱。
(3)statusCode:   指明錯誤狀態碼,表明一種特定的出錯狀態. 
(4)redirect:錯誤重定向的錯誤網頁的名稱.

6、<httpRuntime>節
作用:配置 <cite class="highlight" highlight="true">ASP.NET</cite> HTTP 執行庫設定。該節可以在計算機、站點、應用程式和子目錄級別宣告。

示例:控制使用者上傳檔案最大為4M,最長時間為60秒,最多請求數為100

<httpRuntime maxRequestLength="40960" executionTimeout="60" appRequestQueueLimit="100"/>

7、<pages> 節

作用:標識特定於頁的配置設定(如是否啟用會話狀態、檢視狀態,是否檢測使用者的輸入等)。該節可以在計算機、站點、應用程式和子目錄級別宣告。

示例:

<pages buffer="true" enableViewStateMac="true" validateRequest="false"/>
注:

buffer 是否啟用了 HTTP 響應緩衝。

enableViewStateMac 是否應該對頁的檢視狀態執行計算機身份驗證檢查 (MAC),以放置使用者篡改,預設為false,如果設定為true將會引起效能的降低。
validateRequest 是 否驗證使用者輸入中有跨站點指令碼攻擊和SQL注入式漏洞攻擊,預設為true,如果出現匹配情況就會發 HttpRequestValidationException 異常。對於包含有線上文字編輯器頁面一般自行驗證使用者輸入而將此屬性設為false。

示例:不檢測使用者在瀏覽器輸入的內容中是否存在潛在的危險資料(注:該項預設是檢測,如果你使用了不檢測,一要對使用者的輸入進行編碼或驗證),在從客戶端回發頁時將檢查加密的檢視狀態,以驗證檢視狀態是否已在客戶端被篡改。(注:該項預設是不驗證)
8、<sessionState> 節
作用:為當前應用程式配置會話狀態設定(如設定是否啟用會話狀態,會話狀態儲存位置)。

示例:

  <sessionState mode="InProc" customProvider="DefaultSessionProvider" stateConnectionString ="127.0.0.1" sqlConnectionString="data source=127.0.0.1" cookieless="false" timeout="20"/>

注:

(1)mode: 分為off,Inproc,StateServer,SqlServer幾種狀態 ;mode="InProc"表示:在本地儲存會話狀態(你也可以選擇儲存在遠端伺服器或SAL伺服器中或不啟用會話狀態)
(2)stateConnectionString :指定Asp.net應用程式儲存遠端會話狀態的伺服器名,預設為本機 
(3)sqlConnectionString:  當用會話狀態資料庫時,在這裡設定連線字串 
(4)cookieless:   設定為true時,表示不使用cookie會話狀態來標識客戶;否則,相反. 

(5)TimeOut:   用來定義會話狀態儲存的時間,超過期限,將自動終止會話. 會話可以處於空閒狀態的分鐘數

小結

     web.config配置是一個很重要的知識點,並且知識點內容也都是固定的,所以用一個大的時間點去了解一下,研究一下,我想會對其更理解哦。