2012-09-26 58 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)。