我有一个部署到 azure 的 asp.net 4.5 应用程序。 服务计划为标准(S2)2核
我有一个长时间运行的任务,需要在对操作方法发出 get 请求后以“即发即忘”的方式执行。
但即使使用以下测试代码:
public ActionResult TestItem()
{
// test method source is below
HostingEnvironment.QueueBackgroundWorkItem(ct => this.Context.TestMethod(););
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
public void TestMethod()
{
using (var conn = _connectionFactory.Create())
{
conn.Open();
conn.Execute("INSERT INTO web.HotelSearchQueue (HSQ_ID) VALUES(@id)", new { @id = Guid.NewGuid() });
}
}
什么也没发生。当然,这在 DEV 机器上工作正常,直接调用时也工作正常,阻塞请求线程。
知道什么可能导致该问题吗?
最佳答案
我也遇到过同样的问题。调用支持人员后,他们建议我在 Azure 应用服务“WEBSITE_DYNAMIC_CACHE”的应用程序设置中添加附加选项,值为“0”。这是临时修复,他们表示将来将提供更新,这将允许避免使用此设置。
关于c# - HostingEnvironment.QueueBackgroundWorkItem 永远不会在 azure 部署的 asp.net mvc 4.5 应用程序上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028468/