使用链接文件在App或Web配置中进行AppSettings

时间:2013-07-02 23:18:32

标签: c# asp.net .net web-config app-config

我正在尝试在Windows服务和ASP.NET MVC网站之间引用一些常见的配置设置。我是通过在App.config或Web.config(分别)中使用appSettings上的file属性来完成的。正在引用的文件(名为common.config)是同一解决方案中单独项目中的链接文件。该common.config设置为内容两个项目中的始终复制

This stack answer to a similiar question似乎至少建议使用configSource这个解决方案。我不想要configSource,因为我只希望在两个项目中共享一些属性。 更新:我刚试过这个,而且configSource也不起作用。它找不到配置文件。这使我相信common.config不会被视为带有副本的内容。

示例App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="common.config">
    <add key="NotCommonKey" value="1"/>
  </appSettings>
</configuration>

示例Web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings file="common.config">
    <add key="NotCommonKey2" value="2" />
  </appSettings>
</configuration>

示例common.config(内容 - &gt;始终复制)

<appSettings>
  <add key="CommonKey" value="1" />
</appSettings>

我正在使用 AppSettings 属性中的 ConfigurationManager / WebConfigurationManager 读取。

任何想法为什么当common.config是一个链接文件时,它的AppSettings值没有被使用,当它没有被链接时它是否正常工作?

谢谢!

3 个答案:

答案 0 :(得分:12)

在Web.Config中你必须添加&#34; bin /&#34; (见下面的例子)。

默认情况下,web.config不会复制到bin文件夹中,但是文件common.config是,因此您必须从web.config添加路径。在非Web项目中,默认行为是将App.config复制到名为MyProgram.exe.config的bin文件夹,并且与common.config位于同一目录中。

<appSettings file="bin/common.config">

答案 1 :(得分:0)

使用“ bin / ...”的想法很好,但是会导致错误,指出“ /”在生成的虚拟路径中是无效字符。

正确的解决方法是使用“ bin ...”。

欢呼

答案 2 :(得分:0)

我用它来访问另一个.exe的配置文件,不确定它是否可以与MVC项目一起使用,但这可能会使您更接近:

string proj2Exe = @"C:\projects\proj2\bin\Debug\proj2.exe";
Configuration proj2Config = ConfigurationManager.OpenExeConfiguration(proj2Exe);
string mysetting = proj2Config .AppSettings.Settings["ThatSetting"].Value;