Хранение SMTP вне файла Web.Config
-
03-07-2019 - |
Вопрос
В течение некоторого времени я хранил настройки подключения и приложения во внешнем файле и просто ссылался на этот файл через свой web.config.Это работает очень хорошо, потому что позволяет мне хранить отдельные строки подключения и настройки приложения.Это действительно удобно, поскольку во время разработки я часто вношу много изменений в веб-конфигурацию, и мне не нравится управлять конкретными значениями среды каждый раз, когда мне нужно обновить свой web.config.
Могу ли я добиться этого с помощью разделов конфигурации SMTP в файле web.config.
Решение
Конечно, вы можете использовать атрибут 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, поэтому я обновил приведенный выше код, чтобы указать это - та же идея, только этот должен работать.:)
Другие советы
Я не уверен, что то, что у меня есть, предназначено только для более новых версий .NET.Я получил ошибку во время выполнения, используя принятый ответ.
Пожалуйста, обновите принятый ответ блоком кода ниже, если работаете с более новыми версиями .NET.Узел smtp также должен быть в отдельном файле, а не только сетевой узел.Весь узел smtp в реальном файле Web.config заменяется файлом, который вы туда поместили, в отличие от appSettings, где он, кажется, добавляется к нему.
Веб.конфигурация -
<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>
Мое программное обеспечение хранит его в реестре даже в рабочей среде.