在 ASP.NET CORE 2.0 中,我有这种行为:我从浏览器发送两个 AJAX 请求,第一个请求发送到一个操作(action1,这是一个异步操作),第二个请求发送到另一个操作(action2)。当服务器正在处理第一个请求时,第二个请求排队,然后当第一个请求命中“等待”指令进入动作 1 时,动作 2 立即开始处理第二个请求并且第一个请求进入队列。这是预期的行为,但是如果我在 ASP.NET 4.6 中尝试这个,我会出现这种行为:当第一个请求达到“等待”指令时,第二个请求保持排队,必须等到第一个动作完成整个处理,为第二个动作接收第二个请求。
这是我的服务器端代码
[HttpPost]
public async Task<JsonResult> LongRunningAction(HttpPostedFileBase file)
{
for (int i = 0; i < 100; i++)
{
await Task.Delay(300);
}
return Json("finish");
}
[HttpPost]
public ActionResult ParallelAction()
{
return this.Content("result");
}
这是我的js:
startParallelRequest();
startLongRunningRequest()
function startLongRunningRequest(){
$.ajax(
{
url: "/mycontroller/LongRunningAction",
data: null,
processData: false,
contentType: false,
type: "POST",
success: function () {
stopParallelAction();
}
}
)
}
var intervalId;
function startParallelRequest() {
intervalId = setInterval(
function () {
$.ajax(
{
url: "/mycontroller/ParallelAction",
data: null,
processData: false,
contentType: false,
type: "POST",
success: function () {
}
}
);
},
1000
);
}
function stopParallelRequest() {
clearInterval(intervalId);
}
我想要得到的是循环每次迭代中并行动作的响应。此行为在 ASP.NET 2.0 项目中可以正常工作,但在 ASP.NET 4.6 中则不行。提前致谢。