Как мое приложение ASP.NET получает настройки SMTP автоматически от web.config?

Я заметил, что мы всегда просто похожи:

SmtpClient mSmtpClient = new SmtpClient();
// Send the mail message
mSmtpClient.Send(mMailMessage);

И единственное место, учетные данные установлены, находится в web.config:

  <system.net>
    <mailSettings>
      <smtp>
        <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/>
      </smtp>
    </mailSettings>
  </system.net>

Таким образом, мой вопрос, как он автоволшебно выводит их?

12
задан MetaGuru 4 May 2010 в 17:21
поделиться

3 ответа

В документации говорится, что конструктор SmtpClient без параметров считывает свою конфигурацию из файла конфигурации приложения или машины. Для веб-приложения конфигурационным файлом приложения является web.config. Это также означает, что если элемент mailSettings не установлен в Web.config, он будет искать настройки в machine.config, прежде чем сдаться:

"Этот конструктор инициализирует Host, Учетные данные и порт для нового SmtpClient, используя настройки в приложении или машинном конфигурационных файлах."

19
ответ дан 2 December 2019 в 06:44
поделиться

В вашей папке Windows есть файл machine.config, и каждый веб-сайт (или приложение) имеет файл web.config (или app.config файл). Эти файлы объединяются, чтобы получить настройки для домена приложения.

Класс smtp просто обращается к конфигурации, вероятно, через ConfigurationManager Class

1
ответ дан 2 December 2019 в 06:44
поделиться
var config = WebConfigurationManager.OpenWebConfiguration("Web.config");    
var settings= config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;

if (settings!= null)
{
    var port = settings.Smtp.Network.Port;
    var host = settings.Smtp.Network.Host;
    var username = settings.Smtp.Network.UserName;
    var password = settings.Smtp.Network.Password;      
}
2
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: