是否MvcMailer SendAsync阻止ASP.NET MVC请求?(Does MvcMail

2019-09-16 15:58发布

有谁知道,如果在SmtpClientWrapper块MvcMailer SendAsync方法的ASP.NET MVC请求? 纵观MvcMailer wiki和代码我会说是的。

所以,我仍然需要使用像WebBackgrounder作为disussed 这里在我的MVC应用程序安全和真正的异步发送邮件?

我在寻找一个明确的答案感谢。

Answer 1:

下载MvcMailer并运行自己的测试后,我可以证实,SendAsync不会阻止ASP.NET请求,直到完成。

微软证实了这一行为https://connect.microsoft.com/VisualStudio/feedback/details/688210/smtpclient-sendasync-blocking-my-asp-net-mvc-request

“SendAsync()调用SynchronizationContext.OperationStarted(),它是一个提示,未处置HttpContext实例的(或甚至正在进行的请求),直到异步操作已完成。”

作为MvcMailer刚刚从System.Net.Mail包装SendAsync从相同的限制受到影响。

异步发送邮件的正确方法是使用类似WebBackgrounder,因为那是一个完全后台操作(所以如果你使用SendAsync或发送没关系)。

为了简单起见,你也可以使用Ajax来发送电子邮件,但是这具有一个客户端,而不是服务器操作的缺点。



文章来源: Does MvcMailer SendAsync block a ASP.NET MVC Request?