tôi đã có sau đây để gửi email, mà làm việc:Một module không đồng bộ hoặc xử lý hoàn thành trong khi một hoạt động không đồng bộ được vẫn chưa
private SmtpClient _client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("[email protected]", "password"),
EnableSsl = true
};
public void DoThis(){
_client.Send("[email protected]", to.Email, "Subject", "Body");}
public void DoThat(){
_client.Send("[email protected]", to.Email, "Subject", "Body");}
Nhưng nó ngăn chặn các ứng dụng web cho đến khi email được gửi đi, vì vậy tôi quyết định thử gửi không đồng bộ:
public void DoThis(){
var message = new MailMessage("[email protected]", to.Email, "Subject", "Body");
_client.SendAsync(message, null);
}
nào tôi có thể thấy bị đối xử không đồng bộ nếu tôi gỡ lỗi, nhưng tôi luôn luôn nhận được như sau:
An asynchronous module or handler completed while an asynchronous operation was still pending.
Tôi đang làm gì sai?
Không đồng bộ không làm gì để thay đổi thực tế rằng các quy trình chạy dài không nên được xử lý bên trong IIS. Bạn nên ném điều này vào một bảng nhiệm vụ và để cho một nhiệm vụ theo lịch trình định kỳ hoặc một dịch vụ windows chọn nó lên. –
@RobVious Tôi đang đối mặt với cùng một vấn đề. Bạn có thể giải quyết nó không? – Bitsian
@Bitsian yeah, hãy xem câu trả lời của tôi bên dưới – RobVious