我正在研究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文件。
答案 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>