调用mvc异步方法的ajax调用永远不会返回

时间:2013-08-05 08:46:28

标签: c# jquery asp.net-mvc-4 async-await

我在我的视图中有一个ajax调用chtml在我的控制器中调用异步方法。问题是即使控制器方法确实返回,结果也永远不会返回。因此,在浏览器中,它一直等待响应,并且永远不会调用ajax成功或完整方法。如果我同步这样做,它会工作。我使用的是mvc 4,.net 4.5。

在我看来,我有以下ajax:

$.ajax({
   type: "POST",
   url: '@Url.Action("PopulateCertificatesViewModel")',
   data: data,
   success: function(certificatesViewModel) {
     alert('success');
     //do stuff with the response data...

   },
  complete: function() {
    alert('complete');
});

在我的控制器中,我有以下方法:

[HttpPost]
public async Task<JsonResult> PopulateCertificatesViewModel(int orderId)
{
   var service = getservice();

   await Task.Run(() =>
            {                    
                response = service.getData();
            });

   return Json(response);
}

2 个答案:

答案 0 :(得分:1)

我有类似的问题。我的请求将从控制器返回,并且在浏览器中处于挂起状态,请求中的内容永远不会显示。我确定我使用的是MVC 4和.NET 4.5,并在我的web.config中设置了<httpRuntime targetFramework="4.5" />

最后修复它的是使用IISExpress而不是Visual Studio附带的Cassini Web服务器。

希望这有帮助。

答案 1 :(得分:0)

使用contentType :'application/json'尝试$ .ajax。我应该工作。