Получить настройку почты из Web.Config в методе SendAsync?

Я работаю над функцией забытого пароля. В моем web.config файле я выполнил настройки почты:

<system.net>
    <mailSettings>
      <smtp from="email">
        <network host="host" port="25" userName="" password="=" enableSsl="true" />
      </smtp>
    </mailSettings>
</system.net>

В моем SendAsync методе я пытаюсь прочитать настройки из web.config:

SmtpClient client = new SmtpClient();
return client.SendMailAsync(ConfigurationManager.AppSettings["SupportEmailAddr"],
                                    message.Destination,
                                    message.Subject,
                                    message.Body);

Понятия не имею, что это: AppSettings["SupportEmailAddr"]

Я взял это здесь.

Это дает мне следующее исключение:

Значение не может быть нулевым. Название параметра: от


person M Armaan    schedule 01.12.2017    source источник


Ответы (1)


В вашем файле web.config есть раздел под названием: <appSettings>.

Это тоже имеет в виду ConfigurationManager.AppSettings.

["SupportEmailAddr"] просматривает конкретную настройку под названием SupportEmailAddr.

В вашем web.config это будет выглядеть примерно так:

<appSettings>
    <add key="SupportEmailAddr" value="[email protected]" />
</appSettings>

Вы получаете сообщение, которое не может быть нулевым, потому что у вас не будет настройки в вашем web.config, как указано выше.

Итак, чтобы исправить сообщение об ошибке, найдите свой <appSettings> и добавьте:

<add key="SupportEmailAddr" value="[email protected]" />

В качестве альтернативы, если у вас уже есть текущее значение в ваших AppSettings, просто измените ключ, который вы ищете, в коде C #.

ConfigurationManager.AppSettings["CorrectAppSettingKey"]

Примечание: если вы планируете использовать какие-либо функции наследования web.config, вам следует WebConfiguratonManger.AppSettings вместо ConfigurationManager.AppSettings. Посмотрите разницу между ними здесь: В чем разница между WebConfigurationManager и ConfigurationManager?

person Ashley Medway    schedule 01.12.2017
comment
Поэтому я должен добавить новый ключ в свой файл конфигурации с помощью SupportEmailAddr. Остальные настройки оставьте как есть. - person M Armaan; 01.12.2017
comment
@MHussain Да, если у вас уже нет правильных настроек. Если у вас уже есть параметр, который вы хотите использовать. Измените SupportEmailAddr в ConfigurationManager.AppSettings["SupportEmailAddr"] на ключ, который хотите использовать. например ConfigurationManager.AppSettings["MyOtherKey"] - person Ashley Medway; 01.12.2017
comment
Я получаю письмо для сброса настроек. Но когда я нажимаю на ссылку, появляется следующая ошибка: A potentially dangerous Request.QueryString value was detected from the client (code="...QQ==">here</a") - person M Armaan; 01.12.2017
comment
@MHussain Лучше создать для этого новый вопрос :) - person Ashley Medway; 01.12.2017
comment
Я нашел решение. Моя вина. - person M Armaan; 01.12.2017