Хранение SMTP вне файла Web.Config - PullRequest
16 голосов
/ 30 апреля 2009

В течение некоторого времени я сохранял настройки подключения и приложения во внешнем файле и просто ссылался на этот файл через мой web.config. Это работает очень хорошо, потому что позволяет мне сохранять отдельные строки подключения и настройки приложения. Это действительно удобно, так как я обнаружил, что во время разработки я часто вносил много изменений в webconfig и ненавижу управлять конкретными значениями среды каждый раз, когда мне нужно обновить свой web.config.

В любом случае я могу добиться этого с помощью разделов конфигурации SMTP в web.config.

Ответы [ 3 ]

28 голосов
/ 30 апреля 2009

Конечно, вы можете использовать атрибут configSource.

Пример:

<system.net>
  <mailSettings>
   <smtp configSource="MailSettings.config"/>
  </mailSettings>
</system.net>

Затем поместите данные конфигурации mailSettings в MailSettings.config

Итак, ваш файл MailSettings.config будет выглядеть примерно так:

    <network 
    host="relayServerHostname" 
    port="portNumber"
    userName="username"
    password="password" />

Обновление : похоже, что для правильной работы может понадобиться перейти в узел smtp, поэтому я обновил приведенный выше код, чтобы указать, что - та же идея, только эта должна работать. :)

0 голосов
/ 24 марта 2018

Я не уверен, что то, что у меня есть, предназначено только для более новых версий .NET. Я получил ошибку во время выполнения, используя принятый ответ.

Пожалуйста, обновите принятый ответ с помощью блока кода ниже, если вы работаете с более новыми версиями .NET. Узел smtp также должен находиться в отдельном файле, а не только в сетевом узле. Весь узел smtp в реальном файле Web.config заменяется файлом, который вы там поместили, в отличие от appSettings, где он, кажется, добавляет его.

Web.config -

  <system.net>
        <mailSettings>
          <smtp configSource="your-source-file">
          </smtp>
        </mailSettings>
    </system.net>

Ваш файл -

   <smtp from="noreply@example.com">
      <network
        host="your-host"
        port="your-port"
        userName="your-user-name"
        password="your-password"/>
    </smtp>
0 голосов
/ 30 апреля 2009

Мое программное обеспечение сохраняет его в реестре, даже в рабочем состоянии.

...