有没有办法在标准操作方法中调用异步操作方法而不等待异步方法执行(保持相同的请求对象)?
public class StandardController : Controller
{
public ActionResult Save()
{
// call Background.Save, do not wait for it and go to the next line
return View();
}
}
public class BackgroundController : AsyncController
{
public void SaveAsync()
{
// background work
}
}
我尝试使用 Task 类来做后台工作,但是当我开始任务并且 action 方法返回了 View 时,Request 被杀死并且我的 DependencyResolver 实例被删除,所以后台任务开始抛出异常。
第一个想法是执行 Standard.Save(不调用后台任务)并返回可以在 ajax 中调用 Background.Save 方法的 View。换句话说:向异步控制器调用另一个请求,以启动后台任务。
主要问题是如何调用异步方法来保存授权信息(在 cookie 中)和依赖解析器(在我的例子中:autofac)。