2012-09-26 94 views
0

我們有以下項目:的web.config和app.config中的applicationSettings被覆蓋在ASP.NET

  • Domain.UI.Web
  • Domain.Business
  • Domain.Services.EndPoints
  • Domain.Services.Contracts
  • Domain.Services.Agents

了Applica tionSettings被添加到app.Config在例如Domain.Business項目:

<applicationSettings> 
    <Domain.Business.My.MySettings> 
     <setting name="SomeKey" serializeAs="String"> 
      <value>someDummyValue</value> 
    </Domain.Business.My.MySettings> 
</applicationSettings> 

的鍵添加那裏由Visual Studio生成的類型化的訪問。但是,該值將被另一個項目中的web.config的值覆蓋。這是Domain.Services.EndPoints項目的web.config

<Domain.Business.My.MySettings> 
     <setting name="SomeKey" serializeAs="String"> 
      <value>actual_value</value> 
     </setting> 
    </Domain.Business.My.MySettings> 
</applicationSettings> 

當我My.Settings.SomeKeyDomain.Business項目的價值是從端點項目actual_value。這似乎是自動發生的,因爲我無法在我們的解決方案中找到任何代碼,似乎正在這樣做,我無法讓Google回答我的問題:

這是什麼?這是ASP.NET或WCF中的標準嗎?在什麼版本的框架中引入了這個?我在哪裏可以閱讀關於這種覆蓋行爲的更多信息?

+0

我想Domain.Bussiness是一個類庫?在這種情況下,這是正常的行爲。 DLL沒有.config文件,因此它使用引用庫的應用程序的web.config(或可執行文件的app.config)。 – Hanno

+0

就是這樣。顯然,所有的值都被來自「Domain.Services.EndPoints」的值覆蓋。但是沒有任何項目引用了只有'svc'文件的EndPoints。我想你列出的一般原則仍然適用,但這是WCF特有的東西? – Laoujin

回答

1

由於Domain.Bussiness是一個類庫,這是正常的行爲。一個dll沒有.config文件,因此它使用引用該庫的應用程序的web.config(或可執行文件的app.config)。