每当我smtpClient.SendAsync(...)从ASP.NET MVC应用程序中调用时,异步请求都会自动取消,即使SendAsyncCancel()从未调用过.
.Send(...)另一方面,同步请求通过就好了.
我的EmailService服务包装器处理SmtpClient从我的ASP.NET MVC 3应用程序中发送异步电子邮件.通过StructureMap将服务实例注入到每个MVC控制器中,StructureMap将新SmtpClient实例包装在using (...) { }语句中.
这是我的EmailService.SendAsync包装方法SmtpClient:
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}]", …Run Code Online (Sandbox Code Playgroud)