从多个Web.config文件访问appSettings

7
我正在设计一个 ASP.NET MVC4 Web 应用项目。在我的项目根目录下,我有默认的 Web.config 文件和对应元素。特别地,我定义了几个 appSettings 元素。以下是一个示例摘录:
<appSettings>
    <add key="foo" value="bar" />
</appSettings>

当然,我可以在代码中使用ConfigurationManager.AppSettings["foo"]访问此元素。这对我来说非常完美。然而,我正在我的项目旁创建一个NuGet包。该包被安装在我的项目的Areas目录下的其自己的目录中。在这里,在我的包的根目录下,我有另一个Web.config文件。这样,当另一个用户导入NuGet包时,包资源的配置就是本地的。让包的Web.config包含以下内容:

<appSettings>
    <add key="dirEnabled" value="true" />
</appSettings>

关于相对路径的澄清,我现在有两个Web.config文件,一个在./Web.config,另一个在./Areas/PackageName/Web.config

在我的包中,我想获取dirEnabled的值。为了这样做,我调用:ConfigurationManager.AppSettings["dirEnabled"]。然而,这会抛出一个错误。看起来只从./Web.config检索到了appSettings集合,而不是我的包配置文件。 有没有可能从我的包的配置文件中获取appSettings集合,而不是项目根配置文件?


另请参见https://dev59.com/X2gu5IYBdhLWcg3wZmQm - George Birbilis
2个回答

8

弄清楚了!要使用其他配置文件,需要使用WebConfigurationmanager。因此,要访问./Areas/PackageName/Web.config的appSettings,只需使用以下代码:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName");
string dirE = config.AppSettings.Settings["dirEnabled"].Value;

2

谢谢你的回答!不过它仍然抛出了一个错误,表明它找不到这个值。 - mattkgross
你可能会在这里找到一些东西 http://msdn.microsoft.com/zh-cn/library/aa903313(v=vs.71).aspx - Gilles V.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接