如何让 MVCcontroller 方法异步调用长时间运行的 WCF 任务,并在异步调用触发后立即重定向?
我已将 WCF 服务引用配置为“生成异步操作”,但是当调用该方法时,我可以在调试器中看到代码单步执行并传递“RedirectToAction("RedirectToActionTestCompleted")”行,但浏览器不会重定向,直到 WCF 任务完成。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
public ActionResult RedirectToActionTest()
{
Service1Client client = new Service1Client();
client.TestWcfCallAsync();
return RedirectToAction("RedirectToActionTestCompleted");
}
public ActionResult RedirectToActionTestCompleted()
{
return View();
}
}
以及WCF服务方法
public void TestWcfCall()
{
Thread.Sleep(30000); //30 seconds
}
为什么网页等待 WCF 方法完成?
最佳答案
异步方法的重点是它们不应该阻塞。您的测试方法不是异步的。
使用真正的异步 WCF 调用和异步 Controller = 不会出现任何阻塞。
关于c# - MVC 3 - 如何在异步 WCF 调用后立即 RedirectToAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287670/