我在我的 View chtml 中有一个 ajax 调用,在我的 Controller 中调用一个异步方法。问题是即使 Controller 方法确实返回了结果也永远不会返回。所以在浏览器中它一直在等待响应并且永远不会调用 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');
});
在我的 Controller 中,我有以下方法:
[HttpPost]
public async Task<JsonResult> PopulateCertificatesViewModel(int orderId)
{
var service = getservice();
await Task.Run(() =>
{
response = service.getData();
});
return Json(response);
}
最佳答案
我遇到了类似的问题。我的请求将从 Controller 返回,并且在浏览器中只是处于挂起状态,请求的内容永远不会显示。我已经确定我使用的是 MVC 4 和 .NET 4.5 并且有 <httpRuntime targetFramework="4.5" />
在我的 web.config 中设置。
最后为我解决问题的是使用 IISExpress 而不是 Visual Studio 附带的 Cassini Web 服务器。
希望这对您有所帮助。
关于c# - 调用 mvc 异步方法的 ajax 调用永远不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053953/