天天看點

web.config配置詳細說明

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

    1.配置節處理程式聲明

    特點: 位于配置檔案的頂部,包含在<configSections>标志中。

    2.特定應用程式配置

    特點: 位于<appSetting>中。 可以定義應用程式的全局常量設定等資訊.

    3.配置節設定

    特點: 位于<system.Web>節中,控制Asp.net運作時的行為.

    4.配置節組

    特點: 用<sectionGroup>标記,可以自定義分組,可以放到<configSections>内部或其它<sectionGroup>标記的内部.

    (二).配置節的每一節

    1.<configuration>節

    根元素,其它節都是在它的内部.

     2.<appSetting>節

    此節用于定義應用程式設定項。對一些不确定設定,還可以讓使用者根據自己實際情況自己設定

    用法:

     I.

        <appSettings>

           <add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/>

        定義了一個連接配接字元串常量,并且在實際應用時可以修改連接配接字元串,不用修改程式代碼.

    II.

          <add key="ErrPage" value="Error.aspx"/>

        定義了一個錯誤重定向頁面.

    3.<compilation>節

    格式:

        <compilation defaultLanguage="c#" debug="true" />

        default language: 定義背景代碼語言,可以選擇C#和VB.net兩種語言.

     II.

        debug : 為true時,啟動aspx調試; 為false不啟動aspx調試,因而可以提高應用程式運作時的性能。 一般程式員在開發時設定為true,交給客戶時設定為false.

    4.<customErrors>節

        <customErrors mode="RemoteOnly" defaultRedirect="error.aspx"

            <error statusCode="440" redirect="err440page.aspx"/>

            <error statusCode="500" redirect="err500Page.aspx"/>

        />

    I.

        mode : 具有On,Off,RemoteOnly 3種狀态。On表示始終顯示自定義的資訊; Off表示始終顯示詳細的asp.net錯誤資訊; RemoteOnly表示隻對不在本地Web伺服器上運作的使用者顯示自定義資訊.

        defaultRedirect: 用于出現錯誤時重定向的URL位址. 是可選的

    III.

        statusCode: 指明錯誤狀态碼,表明一種特定的出錯狀态.

    IV.

        redirect:錯誤重定向的URL.

    5.<globalization>節

        <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />

        requestEncoding: 它用來檢查每一個發來請求的編碼.

        responseEncoding: 用于檢查發回的響應内容編碼.

        fileEncoding: 用于檢查aspx,asax等檔案解析的預設編碼.

    6.<sessionState>節

        <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />

        mode: 分為off,Inproc,StateServer,SqlServer幾種狀态

        stateConnectionString :指定Asp.net應用程式存儲遠端會話狀态的伺服器名,預設為本機

        sqlConnectionString: 當用會話狀态資料庫時,在這裡設定連接配接字元串

        Cookieless: 設定為true時,表示不使用cookie會話狀态來辨別客戶; 否則,相反.

    V.

        TimeOut: 用來定義會話狀态存儲的時間,超過期限,将自動終止會話.

    7.<authentication>節

        <authentication mode="Forms">

          <forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30"/>

          </authentication>

          <authorization>

          <deny users="?"/>

        </authorization>

        Windows: 使用IIS驗證方式

        Forms: 使用基于窗體的驗證方式

     Passport: 采用Passport cookie驗證模式

        None: 不采用任何驗證方式

     裡面内嵌Forms節點的屬性涵義:

        Name: 指定完成身份驗證的Http cookie的名稱.

        LoginUrl: 如果未通過驗證或逾時後重定向的頁面URL,一般為登入頁面,讓使用者重新登入

        Protection: 指定 cookie資料的保護方式.

        可設定為: All None Encryption Validation四種保護方式

            a. All表示加密資料,并進行有效性驗證兩種方式

            b. None表示不保護Cookie.

            c. Encryption表示對Cookie内容進行加密

            d. validation表示對Cookie内容進行有效性驗證

        TimeOut: 指定Cookie的失效時間. 逾時後要重新登入.

    從檔案名就可以看出是做配置用的,比如配置自定義錯誤頁面,debug,等等

    存放連接配接字元串是最基本的用法,

    進階一點可以配置httpmodule,httphandler...

    再進階一點可以寫一個繼承自IConfigurationSectionHandler,添加自定義的配置節...

    功能是很強大的

    ASP.NET提供了一個豐富而可行的配置系統,以幫助管理人員輕松快速的建立自己的WEB應用環境。    ASP.NET提供的是一個層次配置架構,可以幫助WEB應用、站點、機器分别配置自己的擴充配置資料。    ASP.NET的配置系統具有以下優點:

    ●ASP.NET允許配置内容可以和靜态内容、動态頁面和商業對象放置在同一應用的目錄結構下。當管理人員需要安裝新的ASP.NET應用時,隻需要将應用目錄拷貝到新的機器上即可。

    ●ASP.NET的配置内容以純文字方式儲存,可以以任意标準的文本編輯器、XML解析器和腳本語言解釋、修改配置内容。

    ●ASP.NET 提供了擴充配置内容的架構,以支援第三方開發者配置自己的内容。

    ●ASP.NET配置檔案的更修被系統自動監控,無須管理人員手工幹預。

     4.2.2配置檔案的規則

    ASP.NET的配置檔案是基于XML格式的純文字檔案,存在于應用的各個目錄下,統一命名為“config.web”。它決定了所在目錄及其子目錄的配置資訊,并且子目錄下的配置資訊覆寫其父目錄的配置。

    WINNT/Microsoft.NET/Framework/版本号/下的config.web為整個機器的根配置檔案,它定義了整個環境下的預設配置。

    預設情況下,浏覽器是不能夠直接通路目錄下的config.web檔案。

    1../Microsoft.NET/Framework/v.1.00/config.web (預設配置檔案)

    2../webapp/config.web (應用的配置)

    3../webapp/owndir/config.web (自己的配置)

    4.2.3配置檔案的文法規則

   (1)辨別

    配置内容被置于config.web檔案中的标記<configuration>和</configuration>之間。

    格式:

        <configuration>

            配置内容…

        </configuration>

    (2)配置段句柄說明

    ASP.NET的配置檔案架構并未指定任何檔案格式或者是支援的配置屬性。相反的,它提出了“配置段句柄申明”的概念來支援任意的使用者定義配置段。

        <configsections>

          <add name=欲定義配置段名 type=處理的句柄函數 />

        </configsections>

    (3)配置段

    具體定義配置的内容,供應用使用。

    以下例子定義了一個“httpmodules”配置段,設定了系統http相關的處理子產品

<configuration>

     <configsections>

       <add name="httpmodules" type="System.Web.Configuration.HttpModules ConfigurationHandler" />

     </configsections>

    <httpmodules>

       <add type="System.Web.SessionState.CookielessSessionModule" />

      <add type="System.Web.Caching.OutputCacheModule" />

      <add type="System.Web.SessionState.SessionStateModule" />

       <add type="System.Web.Security.WindowsAuthenticationModule" />

      <add type="System.Web.Security.CookieAuthenticationModule" />

      <add type="System.Web.Security.PassportAuthenticationModule" />

      <add type="System.Web.Security.CustomAuthenticationModule" />

      <add type="System.Web.Security.UrlAuthorizationModule" />

       <add type="System.Web.Security.FileAuthorizationModule" />

    </httpmodules>

</configuration>

    4.2. 4   ASP.NET定義的标準配置段

(1)httpmodule    段: 定義了應用的http請求的處理子產品以及諸如安全、日志之類的應用方式

(2)httphandlers 段: 負責映射URLs到IhttpHandler類

(3)sessionstat    段: 負責配置http子產品的會話狀态

(4)globalization   段: 配置應用的公用設定

(5)compilation    段: 配置ASP.NET的編譯環境

(6)trace      段: 配置ASP.NET的跟蹤服務

(7)security         段: ASP.NET的安全配置

(8)iisprocessmodel 段: 在IIS上配置ASP.NET的處理模式

(9)browercaps   段: 配置浏覽器的相容部件

    4.2. 5    一個配置讀出的例子

(1)config.web配置檔案

    <!--config.web 請放入FormCfg.aspx所在目錄-->

      <configuration>

          <!--申明一個test配置段-->

          <configsections>

              <add name="test" type="System.Web.Configuration.DictionarySectionHandler" />

          </configsections>

          <test>

              <!--配置一個鍵key,其内容為just a configure test-->

              <add key="key" value="just a configure test" />

          </test>

      </configuration>

(2)讀出其内容

    <!--檔案名:Application/FormCfg.aspx-->

    <html>

    <head>

    <script language="VB" runat=server>

        sub page_load(s as object ,e as eventargs)

        '取出test配置段的key鍵的值

        Dim CfgSection As Hashtable = Context.GetConfig("test")

         Dim Msg As String = CStr(CfgSection("key"))

        lblMsg.text=Msg

        end sub

    </script>

    <title>配置資訊的讀取</title>

    </head>

    <body>

        <center>

            config.web中"test"配置段中key的内容為: <asp:label id=lblmsg runat=server />

        </center>

     </body>

    </html>

(3)運作結果

    4.2. 6    Config.web配置執行個體

    <configuration>

        <!--定義使用者應用的公用設定,如SQL的sql連接配接串等等-->

        <appsettings></appsettings>

        <!--設定浏覽器的相容性部件-->

        <browsercaps></browsercaps>

        <!--編譯環境設定,非調試模式-->

        <compilation debugmode="false">

            <!--預設編譯語言為vb,以後可以不再在Page中定義腳本語言-->

            <compilers defaultlanguage="vb">

            <!--以MSVSA.dll編譯.vb為字尾的VB檔案-->

            <compiler language="VB" extension=".vb" type="MSVSA.dll#Microsoft.VB.Compiler"/></compilers>

            <assemblies>

                <!--加入對System.Data的引用-->

                <add assembly="System.Data" />

                <!--去掉對System.Data的引用-->

                <remove assembly="System.IO" />

                <!--去掉config.web中包含或繼承來的引用-->

                <clear />

            </assemblies>

        </compilation>

        <!--設定應用全局環境-->

            <!--檔案、請求、傳回以gb2312編碼,以保證浏覽器正确顯示中文-->

            <globalization fileencoding="gb2312" requestencoding="gb2312" responseencoding="gb2312"/>

            <!--定義使用者出錯的處理-->

            <!--出錯預設顯示defaultredirect指定的頁面,mode為on時,遵循customerrors配置段-->

            <!--mode為off時,忽略使用者出錯,mode為remoteonly時,本地才顯示真正的出錯原因-->

            <customerrors defaultredirect="AnErrorHasOccured.aspx?ErrNum=-1" mode="remote">

                <!--當出錯碼為500時,顯示redirect指定的頁面-->

                <error statuscode="500" redirect="AnErrorHasOccured.aspx?ErrNum=500"/>

            </customerrors>

            <!--指定目錄webapp的通路權限-->

            <location path="webapp” >

                <!--非授權使用者不能進入webapp目錄-->

                <security>

                <authorization>

                <deny users="?" />

                </authorization>

                </security>

             </location>

            <!--定義安全屬性-->

             <security>

                <!--角色為Adminstrators和所有的使用者通路其指定的資源-->

                <allow roles="Adminstrators"/>

                <allow users="*" />

                 </authorization>

             </security>

    </configuration>