【发布时间】:2017-02-03 16:25:15
【问题描述】:
在旧版 MVC 5 Web 应用程序中,我希望用户能够在单击一个按钮后继续浏览,该按钮对长时间运行的操作进行 ajax 调用。
(注意:操作返回void - 我对响应不感兴趣)
当我点击按钮时,在操作完成之前我无法发出任何其他请求。
编辑:这里是ajax代码:
$('#EmailReport') //
.click(function() {
$.ajax({
type: "POST",
url: '/Home/EmailReport',
complete: function() {console.log("done")},
async: true
});
});
控制器
[HttpPost]
public async Task EmailReport()
{
// for testing - sleep for 10 seconds
await Task.Delay(TimeSpan.FromSeconds(10));
}
这是 Chrome 开发工具中的截图:
EmailReport 是 ajax 调用,底部的两个请求是我试图浏览到另一个页面 - 如您所见,第一个请求是 pending,任何后续请求都是 cancelled
有没有人知道如何解决或解决此问题?
【问题讨论】:
-
与其关注客户端,不如看看服务器 - 长时间运行的操作在处理它时是否完全占用了服务器?
-
在“EmailReport”操作中创建一个线程,该线程可以在后台运行并返回 HTTP 200 响应。不要等待通过回复。 AJAX。
-
您是否在该操作中使用会话?
-
正是你的问题
标签: javascript jquery ajax asp.net-mvc