【发布时间】:2016-08-29 03:08:25
【问题描述】:
我发现了一个不错的小工具,它已在 v4.5.2 中添加到 ASP.NET
我想知道它有多安全,以及如何在 ASP.NET MVC 或 Web API 场景中有效地利用它。
我知道我一直想在我的 Web 应用程序中执行快速简单的触发和遗忘任务。例如:
- 发送电子邮件/秒
- 发送推送通知
- 将分析或错误记录到数据库中
现在我通常只创建一个名为
的方法public async Task SendEmailAsync(string to, string body)
{
//TODO: send email
}
我会这样使用它:
public async Task<ActionResult> Index()
{
...
await SendEmailAsync(User.Identity.Username, "Hello");
return View();
}
现在我担心的是,我延迟了用户以便将我的电子邮件发送给他们。这对我来说没有多大意义。
所以我首先考虑只是做:
Task.Run(()=> SendEmailAsync(User.Identity.Username, "Hello"));
但是,在阅读有关此内容时。这显然不是在 IIS 环境中做的最好的事情。 (我不能 100% 确定具体细节)。
这就是我遇到HostingEnvironment.QueueBackgroundWorkItem(x=> SendEmailAsync(User.Identity.Username, "Hello"));的地方
这是一种非常快速简便的方法,可以将发送电子邮件任务卸载到后台工作人员并更快地为用户View() 提供服务。
现在我知道这不适用于运行时间超过 90 seconds 的任务,也不是 100% 保证执行。
但我的问题是:
HostingEnvironment.QueueBackgroundWorkItem() 是否足以:在标准 ASP.NET 网站中发送电子邮件、推送通知、数据库查询等。
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-web-api