asp.net – SmtpClient.SendAsync调用自动取消
发布时间:2020-05-24 09:36: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-mvc – ASP.NET MVC 6中的文件IO Close()方法错误
- asp.net – jquery getJson没有将任何值传递给控制器
- asp.net-mvc – MVC 3 Webgrid – 你如何隐藏不想显示的列?
- 在ASP.NET MVC中检索当前视图名称?
- asp.net-mvc – 通过programmming导入Ms Access数据
- asp.net-mvc – MVC 5具有身份验证模式的外部身份验证=表单
- asp.net-mvc-2 – asp.net-mvc2 – 不使用Model的强类型助手
- asp.net-mvc – 有什么技巧/技巧使用亚音速与Asp.Net MVC框
- asp.net-mvc – 什么是AsyncManager.OutstandingOperations
- asp.net – 跨线程使用HTTPContext
推荐文章
站长推荐
- asp.net-mvc – 如何从强类型视图中隐藏实体框架
- asp.net-core – 在定位.NET Core时引用旧的(完整
- .net – 为什么事件处理程序只能在IHttpModule初
- asp.net-mvc – ASP.NET MVC和EF代码第一内存使用
- asp.net-mvc – 在MVC ActionLink中使用Knockout
- asp.net-mvc – Asp.Net MVC 2 Html.TextBoxFor为
- asp.net – 具有w3wp应用程序池IIS 7的高内存使用
- asp.net-mvc-3 – MVC-3和Html.Serialize(ASP.NE
- 什么是最小的方式来缩小ASP.NET生成的Javascript
- asp.net – “无法启动IIS Express Web服务器”错
热点阅读
