C# 对MVC控制器的angular js async调用不异步
快速概述我们的设置:- 对于前端的MVCWeb应用程序,它将REST请求发送到MVCWebAPI 这一切都很好,但是,我们现在引入了AngularJS,允许我们使用javascript进行双向数据绑定 这是一个非常好的框架,我们已经开始使用ajax$http请求 所以, 在angular中,我们使用$http调用调用RESTWebAPI的MVC控制器,返回数据,在控制器中序列化为JSON,并发送给angularJS请求进行双向数据绑定 我们现在面临的问题是,我们现在一次发出多个HTTP请求,但是,每个请求似乎都在等待前一个请求完成,我们正在努力找出原因? 我们希望所有的请求彼此独立,这样就不会有延迟或等待时间 如果有人能提供任何建议,我们将不胜感激 我希望这一切都有意义 角度代码如下:-C# 对MVC控制器的angular js async调用不异步,c#,asp.net-mvc,angularjs,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc,Angularjs,Asp.net Mvc 4,Asp.net Web Api,快速概述我们的设置:- 对于前端的MVCWeb应用程序,它将REST请求发送到MVCWebAPI 这一切都很好,但是,我们现在引入了AngularJS,允许我们使用javascript进行双向数据绑定 这是一个非常好的框架,我们已经开始使用ajax$http请求 所以, 在angular中,我们使用$http调用调用RESTWebAPI的MVC控制器,返回数据,在控制器中序列化为JSON,并发送给angularJS请求进行双向数据绑定 我们现在面临的问题是,我们现在一次发出多个HTTP请求,但是
$scope.LoadResults();
$scope.GetHistory();
$scope.GetUserDetails();
$scope.GetHistory = function () {
$http.post('/user/GetHistory/', $scope.data).success(function (data, status, headers, config) {
});
}
$scope.GetUserDetails= function () {
$http.post('/user/GetUserDetails/1234', $scope.data).success(function (data, status, headers, config) {
});
}
$scope.LoadResults = function () {
$scope.data = {
frequency: $scope.frequency,
direction: $scope.direction,
view: $scope.view
};
var userid = $('#id').val();
var url = '/user/' + userid + '/GetUserResults/';
$http.post(url, $scope.data).success(function (data, status, headers, config) {
if (data.msg != '') {
$scope.resultssummarydata = data.aaData;
}
else {
$scope.errors.push(data.error);
}
});
}
请注意,如果Patko想将此作为一个答案,他应该得到信任,因为他是真正了解这一点的人(我刚才提供了关闭会话的方法)
尝试将其更改(或添加)到web.config以关闭会话:
ASP.Net中的会话实现非常奇怪。如果来自同一浏览器/用户会话的多个http请求,它将序列化它们并一次处理一个。除此之外,会话实现效率非常低——每个请求都会将整个会话加载到内存中
多年来,ASP.Net会话实现受到了相当广泛的批评——通过谷歌搜索,您可以了解它。web服务器是否负载过重?如果线程池正在耗尽线程,您可能会看到事情开始排队,而不是立即并行运行。在这种情况下,考虑使用<代码>异步代码>代码> >代码>等待/<代码>以允许I/O重动作在执行I/O相关答案时释放线程:HI,当前所有的东西都在本地运行,并且正在使用异步/等待。一天的大部分时间我都在谷歌上搜索。我们是否需要将MVC控制器设置为异步控制器?您似乎担心MVC控制器是异步的,但如果您通过angular(或任何js库)对其进行ajax调用,这与此无关。控制器不必是异步的,也不必在服务器端使用wait。显示一些有角度的代码。只是猜测一下,但如果禁用IIS上的会话状态会怎么样?关于使用REST这个词还有一件事..实际上你有更多的RPC web api,而不是RESTful api。我认为Patko可能有一些想法,因为你的角度代码看起来不错。尝试将此更改(或添加)到web.config:。请注意--禁用会话将意味着您不能再使用TempData。