【问题标题】:How can I reference an appSetting in a different part of web.config如何在 web.config 的不同部分引用 appSetting
【发布时间】:2012-01-21 06:54:17
【问题描述】:

我在一个名为Appsettings.Dev.Config 的单独配置文件中定义了我的appSettings,并且我将该文件包含在我的web.config 文件中,就像这样

<appSettings configSource="ConfigFiles\AppSettings.Dev.config"/>

假设文件中的一项设置是

<add key="MailerEmailAccount" value="myemail@myserver.com" />

我可以在 web.config 的其他地方访问设置 MailerEmailAccount 的值吗?怎么样?

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    不,Web 配置文件无法从自身中提取“设置”;它根本不是动态的。唯一的动态功能是包含其他 .config 的能力,但这只是“将所有这些设置融入其中,就好像它们是我的一部分一样”。

    【讨论】:

    • 我使用 configSource 属性为 appSettings 和 connectionStrings 这样做(从另一个文件中提取设置)。这似乎不适用于 system.net 标签内的 mailSettings 标签(或 system.net 标签本身)。除了 appSettings 和 connectionStrings 之外,还有其他方法可以从其他文件中提取设置吗?
    • 我不确定这是否有限制;和你一样,我主要将它用于 appSettings 和 connectionStrings。如果您使用的是 VS2010,您还可以考虑 Web.Config 转换:weblogs.asp.net/srkirkland/archive/2009/10/13/…
    • 原来 system.net 和 mailSettings 标签不能来自不同的文件。但是,可以使用 smtp 标签(它是 mailSettings 的子标签)。我正在使用 web.config 转换,但仅凭此无法解决此特定问题。谢谢。
    【解决方案2】:

    如果您创建一个自定义 ConfigurationSection 以从 appSettings 中提取值,这可能是可能的。

    这里有一篇文章解释了如何创建自定义配置部分:
    http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

    我不知道这是否是您要查找的内容,但这是我能想到的从 web.config 中读取 web.config 设置的唯一方法。

    编辑

    我还没有测试过这个,但也许这样的东西会起作用?:

    [ConfigurationProperty("localName", IsRequired = true, IsKey = true)]
    public string LocalName
    {
        get
        {
            return this["localName"] as string;
        }
        set
        {                
            this["localName"] = WebConfigurationManager.AppSettings.Get(value);
        }
    }
    

    【讨论】:

    • 感谢黑客链接和代码 sn-p。不确定代码是否适合我现在需要的,但这是个好主意。
    猜你喜欢
    • 2013-12-06
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多