ASP.NET MVC 1不支持在控制器内部生成的异步线程(但是,Futures程序集和MVC 2 Preview中有一些内容,但生产级别发布中没有任何内容)。但是,我想异步发送我的电子邮件,我正在探索这样做的选项。
一旦看似简单的选项,而不是实际同步发送电子邮件,似乎将传递方法设置为删除目录而不是发送它,然后让SMTP服务器按照自己的节奏选择电子邮件。
使用drop目录的性能是否类似于使用异步电子邮件发送?
答案 0 :(得分:0)
SmtpClient实际上有SendAsync方法可供使用。
更新:
在进一步分析这种情况后,似乎在同步控制器中使用SmtpClient.SendAsync会引发以下异常:
异步操作不是 在这种情况下允许。页面开始 一个异步操作必须有 Async属性设置为true和 异步操作只能是 在之前的页面上开始 PreRenderComplete事件。
作为一种解决方法,可以生成手动线程:
public ActionResult Index()
{
new Thread(() =>
{
// TODO: Add exception handling here:
var client = new SmtpClient("host");
client.Send("from", "to", "subject", "body");
}).Start();
return View();
}