asp.net – SmtpClient.SendAsync调用自动取消
发布时间:2020-12-16 04:37:25 所属栏目:asp.Net 来源:网络整理
导读:每当我从ASP.NET MVC应用程序中调用smtpClient.SendAsync(…)时,即使从未调用SendAsyncCancel(),也会自动取消异步请求. 另一方面,同步.发送(…)请求通过就好了. 我的EmailService服务包装器处理从我的ASP.NET MVC 3应用程序中发送带有SmtpClient的异步电子邮
每当我从ASP.NET MVC应用程序中调用smtpClient.SendAsync(…)时,即使从未调用SendAsyncCancel(),也会自动取消异步请求.
另一方面,同步.发送(…)请求通过就好了. 我的EmailService服务包装器处理从我的ASP.NET MVC 3应用程序中发送带有SmtpClient的异步电子邮件.通过StructureMap将服务实例注入到每个MVC控制器中,它将新的SmtpClient实例包装在using(…){}语句中. 这是我的SmtpClient的EmailService.SendAsync包装器方法: public void SendAsync(EmailMessage message) { try { using (var smtpClient = new SmtpClient(_cfg.Host,_cfg.Port) { EnableSsl = _cfg.EnableSsl,Credentials = _credentials }) { smtpClient.SendCompleted += new SendCompletedEventHandler(Email_OnCompleted); var mailMessage = new MailMessage(message.From,message.To) { Subject = message.Subject,Body = message.Body }; smtpClient.SendAsync(mailMessage,message); _logger.Info(string.Format("Sending async email to {0} with subject [{1}]",message.To,message.Subject)); } } catch (Exception ex) { _logger.Error("Async email error: " + ex); throw; } } 这是我的Email_OnCompleted委托: public void Email_OnCompleted(object sender,AsyncCompletedEventArgs e) { var mail = (EmailMessage)e.UserState; if (e.Error != null) { _logger.Error(string.Format("Error sending email to {0} with subject [{1}]: {2}",mail.To,mail.Subject,e.Error)); } else if (e.Cancelled) { _logger.Warn(string.Format("Cancelled email to {0} with subject [{1}].",mail.Subject)); } else { _logger.Info(string.Format("Sent email to {0} with subject [{1}].",mail.Subject)); } } 为什么异步电子邮件被取消,但同步电子邮件通过正常?这可能是处理问题吗? 解决方法
它肯定是一个处置问题.当您处置客户端时,它会取消任何未完成的异步操作.
您应该在Email_OnCompleted中处置客户端. 关于在哪里处置的SO帖子:Dispose SmtpClient in SendComplete? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 是什么导致Squishit重建捆绑包
- asp.net-mvc – 以视图的形式显示视图中多个表的数据 – AS
- asp.net – DropDownList对于不选择值的集合
- asp.net – 仅在本地IIS服务器上支持创建虚拟目录
- 初识ABP vNext(10):ABP设置管理
- asp.net-mvc – 我可以在MVC 3中有/多个_Layout页面吗?为c
- asp.net – Visual C#中事件的下拉列表在哪里?
- asp.net – 是否可以在Windows8上安装IIS 7.5或7
- asp.net-mvc – 在MVC 3 RC中实现TransferResult – 不起作
- 如何测试ASP.NET会员密码是否符合配置的复杂性要求?
推荐文章
站长推荐
热点阅读