【问题标题】:Accessing appSettings from multiple Web.config files从多个 Web.config 文件访问 appSettings
【发布时间】:2013-07-08 15:34:02
【问题描述】:

我正在设计一个 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 集合?

【问题讨论】:

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


【解决方案1】:

想通了!要使用不同的配置文件,请合并WebConfigurationmanager。因此,要访问./Areas/PackageName/Web.config 的appSettings,只需使用:

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

【讨论】:

    【解决方案2】:

    试试

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

    在您项目的 Web.config 中

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2011-08-26
    • 2019-08-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多