2016-07-29 11 views
0

Я запускаю обработчик HTTP-кода C# (ashx) для отправки почты в течение многих лет. Мы считаем, что проблема началась, когда мы переключились на 4.5.1. Мы получаем ошибку:Асинхронная ошибка в SmtpClient SendMailAsync в http-обработчике (ashx)

«Асинхронная операция не может быть запущен в это время асинхронные операции могут быть запущены только в асинхронном обработчике или модуля или во время определенных событий в жизненном цикле страницы ...»

I использовал:

public static void sendMessage(.... 
... 
client.SendAsync(message); 

Осмотрев за то, что происходит, этот метод был изменен на:

public static async Task sendMessage(.... 
... 
await client.SendMailAsync(message); 

Я предполагаю, что мы все еще получаем эту ошибку, потому что не все вызовы стека имеют асинхронный оператор. Чтобы сделать это, мне пришлось бы сделать весь обработчик, который делает много других вещей, асинхронный, который не похож на хорошую идею просто для отправки почты.

Итак, у меня есть два вопроса:

  1. Я правильно, что я не использую асинхр в каждом методе, который в конечном итоге вызывает SendMessage?

  2. Как отправить асинхронную почту сейчас?

+0

Я посмотрел ссылку, но она повторяет то, что я уже сделал. Проблема заключается в асинхронных параметрах, которые вызывают ошибку. – Velocedge

+0

Если вы ссылаетесь на страницу, то обработчик http (ashx) не подходит. – Velocedge

+0

Может ли кто-нибудь посоветовать мне по вопросу № 1 выше? ... # 2, а? – Velocedge

ответ

0

Поскольку комментариев больше не было, я только что начал новый поток и отправил сообщение синхронно. Кажется, что он работает нормально, с тех пор не было проблем.