2011-10-02 29 views
12

web.config文件中的<clear/>有什麼用處?web config clear

我把它下的ConnectionStrings:

<connectionStrings> 
     <clear /> 
    </connectionStrings> 

回答

12

它清除所有繼承鍵,僅此而已。

這裏是MSDN文章: http://msdn.microsoft.com/en-us/library/aa903345(v=vs.71).aspx

+0

什麼時候我會繼承密鑰? –

+2

當您在根以外的文件夾中時。父文件夾中的所有密鑰都將被繼承。 –

+2

它也可以從machine.config繼承。 –

8

刪除所有引用到繼承的連接字符串,只允許由目前的add元素添加連接字符串。

在Brifly:

每個ASP.NET Web應用程序有一個名爲web.config文件中自己的配置文件。實際上,ASP.NET應用程序中的每個目錄都可以有一個。每個web.config文件中的設置適用於其放置目錄中的頁面以及該目錄的所有子目錄。

這稱爲配置繼承。

因此,如果您創建一個ASP.NET應用程序並設置其web.config文件,添加自定義HttpHandlers,UrlRewriting模塊等,並嘗試在子文件夾中創建另一個ASP.NET Web應用程序,則可能最終出現問題,因爲應用程序在子文件夾中將繼承其父級web.config中的所有設置。

所以,如果你在你的根Web應用程序示例設置UrlRewriter模塊是這樣的:

<httpModules> 

    <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/> 

    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

    </httpModules> 

而且在不使用UrlRewriteModule(在子文件夾)您的孩子的Web應用程序,然後如果你嘗試運行子Web應用程序在您的瀏覽器中,您將得到如下錯誤: 配置錯誤 描述:在處理服務此請求所需的配置文件期間發生錯誤。請查看下面的具體錯誤細節並適當修改您的配置文件。

解析器錯誤消息:無法加載文件或程序集「UrlRewritingNet.UrlRewriter」或其依賴項之一。該系統找不到指定的文件。 (d:\項目\ VS \ AspDotNetFaqProject \網站\ web.config行89)

源錯誤:

線88: 89號線:90 線:91 行:

會發生什麼這是因爲UrlRewriteModule是在父文件夾web.config文件中配置的,所以此設置由子應用程序的web.config文件繼承,並且由於此ASP.NET正在尋找BIN目錄中的UrlRewriteModule DLL文件,並且關閉當然它不在那裏。

幸運的是,這個問題有一個簡單的解決方案。

您可以做的第一件事就是刪除您的子應用程序Web中有問題的HttpModule。使用remove命令像這樣的配置文件:

<httpModules> 

    <remove name="UrlRewriteModule" /> 

    </httpModules> 

這將刪除的處理程序和您的應用程序將運行正常。 或者你可以使用的命令是這樣的:

<httpModules> 

    <clear/> 

    </httpModules> 

這將清除所有的HttpModules你的孩子申請。