Доступ к данным из web.config (в папке views)
Я работаю над приложением MVC, и в определенном разделе веб-сайта мне нужно отправлять уведомления по электронной почте (наверное, максимум 10). Поэтому я решил сохранить электронные письма в виде списка в файле web.config, а затем перебрать список для отправки электронных писем.
Сначала мне надоело создавать пользовательский раздел и добавлять нужные мне данные (в основной файл web.config) примерно так ( ссылка):
Мой код:
Файл 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>
как уже было <configSection>
в другом файле web.config. Поэтому вместо этого я добавил данные в файл web.config, сохраненный в папке представлений. Сайт работал, однако section
переменная была null
, Я думаю это потому что ConfigurationManager.GetSection()
попытался получить раздел из "основного" файла web.config. Я не знаю, возможно ли получить доступ к файлу web.config, сохраненному в папке представлений, с помощью кода.
1 ответ
Насколько я знаю, вы не можете получить доступ к web.config внутри папки Views из контроллера, он предназначен для использования в нисходящей области папок 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>