Защита web.config и вынос различных секций web.config в отдельные файлы

В моем проекте потребовалось разделить конфигурационный файл web.config на несколько. Так, чтобы основной файл web.config можно было публиковать, а секретная информация хранилась в отдельных файлах. Рассмотрим несколько таких случаев.

Файл настроек appSettings

Требования: хранить основные настройки (системные) в основном файле web.config, а пользовательские настройки (настройки конкретного приложения) в отдельный файл. Таким образом секция настроек в web.config выглядит так:

<appSettings file=“PrivateSettings.config”>
  <add key=“webpages:Version” value=“2.0.0.0” />
  <add key=“webpages:Enabled” value=“false” />
  <add key=“PreserveLoginUrl” value=“true” />
  <add key=“ClientValidationEnabled” value=“true” />
  <add key=“UnobtrusiveJavaScriptEnabled” value=“true” />
  <add key=“elmah.mvc.disableHandler” value=“false” />
  <add key=“elmah.mvc.disableHandleErrorFilter” value=“false” />
  <add key=“elmah.mvc.requiresAuthentication” value=“false” />
  <add key=“elmah.mvc.IgnoreDefaultRoute” value=“false” />
  <add key=“elmah.mvc.allowedRoles” value=”” />
  <add key=“elmah.mvc.allowedUsers” value=”” />
  <add key=“elmah.mvc.route” value=“elmah” />
</appSettings>

Тогда файл PrivateSettings.config будет содержать следующие настройки:

<appSettings>
  <add key=“CurrentSiteUrlName” value=“oxozle.com”/>
  <add key=“Rss.Link” value=“http://feeds.feedburner.com/oxozle"/>
</appSettings>

Соединение с базой данных

Необходимо вынести настройки подключения к базе данных в отдельный файл. Для этого соответствующую секцию в web.config обозначим так:

<connectionStrings configSource=“ConnectionStrings.config” />

А файл ConnectionStrings.config будет содержать следующее

<connectionStrings>
  <add name=“Name” connectionString=“ConnectionSettings” providerName=“System.Data.EntityClient” />
</connectionStrings>

Вынести произвольную секцию web.config

Мне понадобилось вынести секцию, отвечающую за настройки email. Стоит заметить, что стандартная настройка email оказалось очень удобной. Ранее я использовал настройки в appSettings или писал свои собственные секции настроек для email. Сейчас использую System.Net.Configuration.SmtpSection.

Для этого объявим секцию настроек.

<configSections>
    <sectionGroup name=“mailSettings”>
        <section name=“robot” type=“System.Net.Configuration.SmtpSection” />
    </sectionGroup>
</configSections>

Далее, ниже в web.config объявим эту секцию.

<mailSettings>
<robot configSource=“MailSettings.config” />
</mailSettings>

А в MailSettings.config

<robot from=“Mail Displayname &lt;mail@raccoom.net&gt;”>
  <network enableSsl=“false” host=“smtp.host” port=“587” userName=“user@example.com” password=“pass” />
</robot>

Комментарии

comments powered by Disqus