2012-02-21 53 views
1

我們有一大堆web.config文件非常類似的網站。Web.Config文件和位置

您可以在每個網站的根目錄之前將1個配置文件中的重複配置集中在一起嗎?或者是唯一的選項machine.config?

我們希望集中GAC中的程序集引用。

結構:

  • 包含的目錄
    • 網站1個目錄
    • 網站2目錄
    • 網站3目錄
    • 所有上述網站的web.config文件

回答

0

我還沒有遇到過除machine.config,app/web.config和user.config級別之外的繼承配置文件的方法。但是,您可以在所有配置節(基於ConfigurationSection)上使用configSource屬性來爲服務端點,客戶端端點,綁定,連接字符串等等包含一個公共文件。儘管VS intellisense將其標記爲不受支持,但它確實有效。

<configuration> 

    <system.serviceModel> 
     <services configSource="Services.config" /> 
     <client configSource="Client.config" /> 
     <bindings configSource="Bindings.config" /> 
     <behaviors configSource="Behaviors.config" /> 
    </system.serviceModel> 

    <pages configSource="pages.config"/> 

</configuration> 

配置源文件必須位於應用程序的文件夾或下面的任何文件夾中。沒有上升或絕對路徑。但是有一個技巧可以克服VS2010中的這個限制。您需要添加現有文件作爲鏈接並更改其名爲「複製到輸出目錄」的屬性。這樣,您的絕對路徑文件將被複制到您可以在configSource中引用它的應用程序文件夾中。 在以前的VS版本中,它也有可能,但不夠優雅 - 在後期構建事件中複製文件。

如果您主要看集中WCF設置還有另一種選擇:在代碼配置。這樣的巨大優勢是您可以從VS獲得編譯時檢查和重構支持。如果這聽起來不怎麼樣,我可以向你保證,在一個更大的WCF項目中,配置文件管理是一場噩夢,尤其是當你需要改變某些東西時。通過這種方法,通過創建一個定義了所有服務,端點,綁定等的通用程序集,也可以非常容易地集中化WCF設置。缺點是您無法在不重新編譯的情況下更改WCF設置。但如果這些設置不經常改變,這是一個誘人的選擇。

+0

你如何引用這些configSource?你可以把完整的路徑? EG: 2012-02-21 23:08:09

+0

它必須是相對的而且不會上升。但是您可以通過向項目添加指向文件的鏈接並將其標記爲始終複製來解決此問題。即使在不同的驅動器上,鏈接也可以是完整路徑。 – 2012-02-21 23:40:41

0

您可以使用位於

的%SystemRoot%\ Microsoft.NET的web.config文件\框架\ \ CONFIG \ Web.config文件

或者,如果在IIS中配置您的含目錄作爲主要網站,然後把你的網站目錄作爲應用程序,你可以把web.config放在主要的網站上,以獲得你提到的結構。