C# HostingEnvironment.QueueBackgroundWorkItem从未在azure部署的asp.net mvc 4.5应用程序上执行
我在azure上部署了一个asp.net 4.5应用程序。 服务计划为标准(S2)2核 我有一个长时间运行的任务,需要在对操作方法发出get请求后以fire and forget方式执行 但即使使用以下测试代码:C# HostingEnvironment.QueueBackgroundWorkItem从未在azure部署的asp.net mvc 4.5应用程序上执行,c#,asp.net-mvc-4,azure,C#,Asp.net Mvc 4,Azure,我在azure上部署了一个asp.net 4.5应用程序。 服务计划为标准(S2)2核 我有一个长时间运行的任务,需要在对操作方法发出get请求后以fire and forget方式执行 但即使使用以下测试代码: public ActionResult TestItem() { // test method source is below HostingEnvironment.QueueBackgroundWorkItem(ct => thi
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应用程序服务的应用程序设置中添加附加选项“网站动态缓存”,值为“0”。这是一个临时修复程序,他们说将来将提供更新,这将允许避免使用此设置。大约一年后,我遇到了一些关于QueueBackgroundWorkItem的愚蠢但类似的问题。我调用此方法生成后台任务,将文件上载到远程服务器。我有4个PDF流要上传。其中3个会上传,一个不会,无论我尝试排队4个后台任务来发送文件,还是一个后台任务来发送一个有问题的PDF。失败的总是同一个PDF。并且没有抛出异常或任何东西。后台方法从未启动过。当我在主线程上调用该方法时,文件被成功发送。