从web.config访问数据(在views文件夹中)

时间:2013-09-11 10:22:14

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

我正在研究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...

但后来我收到一条错误,指出不能有重复<configSection>,因为其他web.config文件中已有<configSection>。因此,我将数据添加到保存在views文件夹中的web.config文件中。然而,该网站的section变量为null。我想这是因为ConfigurationManager.GetSection()试图从'main'web.config文件中获取一个部分。我不知道是否可以通过代码访问保存在views文件夹中的web.config文件。

1 个答案:

答案 0 :(得分:0)

据我所知,您无法从控制器访问Views文件夹中的web.config,它被设计用于降序视图文件夹范围。

无论如何,您收到的错误表示您正在定义重复部分,因此请尝试在root 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>