【问题标题】:Accessing data from web.config (in views folder)从 web.config 访问数据(在 views 文件夹中)
【发布时间】:2013-09-15 07:46:42
【问题描述】:

我正在开发一个 MVC 应用程序,并且在网站的特定部分我需要发送通知电子邮件(我猜可能最多 10 封)。所以我想我会将电子邮件保存为 web.config 文件中的列表,然后遍历列表以发送电子邮件。

我首先厌倦了创建一个自定义部分并添加我需要的数据(在主 web.config 文件中),就像这样 (Reference):

我的代码:

web.config 文件:

<configSections>
    <section
        name="AdminEmails"
        type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<AdminEmails>
    <add key="email1" value="test@test.com" />
    <add key="email2" value="abc@abc.com" />
    <add key="email3" value="email@email.com" />
    <add key="email4" value="username@domain.com" />
</AdminEmails>

控制器中的代码:

NameValueCollection section = 
    (NameValueCollection)ConfigurationManager.GetSection("AdminEmails");

//... loop through emails in 'AdminEmails' section...

但随后我收到一条错误消息,指出不能重复 &lt;configSection&gt;,因为另一个 web.config 文件中已经存在 &lt;configSection&gt;。因此,我将数据添加到保存在 views 文件夹中的 web.config 文件中。该网站运行但section 变量为null。我想这是因为ConfigurationManager.GetSection() 试图从'main' web.config 文件中获取一个部分。我不知道是否有可能通过代码访问保存在views文件夹中的web.config文件。

【问题讨论】:

    标签: asp.net-mvc web-config configurationmanager configsection


    【解决方案1】:

    据我所知,您无法从控制器访问 Views 文件夹中的 web.config,它旨在用于降级 Views 文件夹范围。

    无论如何,您收到的错误表明您正在定义重复部分,因此请尝试在根 web.config 中的现有部分之后添加您的自定义部分,例如:

    <configuration>
      <configSections>
        <!-- YOUR SECTION -->
        <section name="AdminEmails" type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <!-- EXISTING SECTIONS -->
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"></sectionGroup>
        </sectionGroup>
      </sectionGroup>
    </configSections>
    

    【讨论】:

    • 感谢您的回复。但奇怪的是,在我的根 web.config 文件中没有 标记,它只存在于视图 web.config 文件中。但是我收到了“重复部分”错误。在我将自定义部分放入视图 web.config 文件后,它没有发生。
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多