从多个Web.config文件访问appSettings

时间:2013-07-10 15:44:36

标签: asp.net asp.net-mvc-4 web-config

我正在设计一个ASP.NET MVC4 Web App项目。在我的项目的根目录中,我有习惯的默认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集合?

2 个答案:

答案 0 :(得分:7)

想出来!要使用其他配置文件,请合并WebConfigurationmanager。因此,要访问./Areas/PackageName/Web.config的appSettings,只需使用:

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

答案 1 :(得分:2)

尝试

<appSettings file="<Path_To_Second_Web.Config>">
   ...
</appSettings >

在项目的Web.config

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx