微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不等待第一个在 asp.net mvc 中完成的情况下调用第二个 ActionResult

如何解决如何在不等待第一个在 asp.net mvc 中完成的情况下调用第二个 ActionResult

我有两个 ActionResults,我使用 Ajax 请求 (async:true) 连续调用它们。问题是,虽然第二个 ActionResult 由 Ajax 调用,但在第一个 ActionResult 完成之前不会命中控制器。 我不想等待第一个 ActionResult 完成。有什么解决办法吗?

function FuncOne(){
  $.ajax({
    url:'/report/ActionOne',type:'post',async:true,success:function(result){
    }
  })
}
function FuncTwo(){
  $.ajax({
    url:'/report/ActionTwo',success:function(result){
    }
  })
}

FuncOne()
FuncTwo()

ActionOne 和 ActionTwo 都是 (public async Task<ActionResult> ActionResultName)...

解决方法

终于找到问题所在了。它是 SessionState 限制。如您所知,我们可以在 Asp.net mvc 的 Session 中存储和重用任何数据。现在基于 Microsoft 文档,当我们在控制器中使用 Session 时,为了响应正确的请求,.Net 会阻止对同一控制器的异步请求。所以第二个请求必须等待第一个请求完成。解决办法是将async Controller分开,在其顶部添加如下标签:

 [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

在此控制器中,您无法添加或编辑会话数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。