加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MvcMailer SendAsync阻止ASP.NET MVC请求吗?

发布时间:2020-12-16 06:59:25 所属栏目:asp.Net 来源:网络整理
导读:有谁知道SmtpClientWrapper中的MvcMailer SendAsync方法是否阻止ASP.NET MVC请求?看看MvcMailer维基和代码,我会说是的. 所以我仍然需要使用像WebBackgrounder这样的东西来讨论here在我的MVC应用程序中发送一个安全且真正异步的邮件? 我正在寻找一个明确的
有谁知道SmtpClientWrapper中的MvcMailer SendAsync方法是否阻止ASP.NET MVC请求?看看MvcMailer维基和代码,我会说是的.

所以我仍然需要使用像WebBackgrounder这样的东西来讨论here在我的MVC应用程序中发送一个安全且真正异步的邮件?

我正在寻找一个明确的答案谢谢.

解决方法

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

Microsoft确认此行为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或Send无关紧要).

为了简单起见,您还可以使用Ajax发送电子邮件,但这样做的缺点是客户端而不是服务器操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读