Новый MailAddress() выходит из метода
У меня довольно странная проблема, которую я не могу обернуть. Итак, вот код:
[HttpGet]
[AllowAnonymous]
public ActionResult SendEmail()
{
SendRegisterEmail("Test", "Testagain", "lastTest");
return View("Index");
}
public async Task<bool> SendRegisterEmail(string subject, string message, string to)
{
var email = new Email();
var mailAddress = new MailAddress(to);
email.Subject = subject;
email.Body = message;
var mailAddressCollection = new MailAddressCollection();
mailAddressCollection.Add(mailAddress);
email.To = (mailAddressCollection);
return await Send(email);
}
Теперь, чтобы доказать свою проблему, я разбил код на отдельные строки, чтобы видеть, на какой строке он разбивается. Вот что я нашел:
Когда я отлаживаю это, и я вступаю в SendRegisterEmail
метод, строка, которая говорит var mailAddress = new MailAddress(to);
запускается, а затем выходит из функции и запускает строку return View("Index");
и страница загружается. Странно то, что я добавил метод логирования в Send в самом конце, и логирование никогда не попадало в цель. Я поставил точку останова на Send, и она так и не попала в цель. Как будто создание электронной почты не удалось, решил выйти из функции вызывающего и продолжил с кодом.
Я не имею ни малейшего понятия, почему.
1 ответ
SendRegisterEmail
метод асинхронный, вы его не ждете.
В настоящее время вы запускаете операцию "забей и забудь" и return View
инструкция выполняется при создании нового MailAddress
пример. Скорее всего, это бросает FormatException
который вы не можете поймать, потому что исключение выдается в другом потоке.
обновите свой метод действия, чтобы
public async Task <ActionResult> SendEmail()
{
await SendRegisterEmail("Test", "Testagain", "lastTest");
return View("Index");
}
Также ожидание до возвращения не нужно, вы можете изменить его на
public Task<bool> SendRegisterEmail(string subject, string message, string to)
{
var email = new Email();
// ...
return Send(email);
}
но это не связано с вашей проблемой.