【发布时间】:2014-05-15 20:30:11
【问题描述】:
快速概览我们的设置:- 用于前端的 MVC Web 应用程序,这会将 REST 请求发送到 MVC Web API。
这一切都很好,但是,我们现在引入了 AngularJS 以允许我们使用 javascript 的 2 路数据绑定。
这是一个非常好的框架,我们已经开始使用 ajax $http 请求了。
所以, 在 Angular 中,我们使用 $http 调用调用 REST WEB API 的 MVC 控制器,返回数据,在控制器内序列化为 JSON 并发送到 angularJS 请求以进行 2 路数据绑定。
我们遇到的这个问题是,我们现在一次发出多个 HTTP 请求,但是,每个请求似乎都在等待前一个请求完成,我们正在努力找出原因? 我们期望所有的请求相互独立,这样就不会有延迟或等待时间......
如果有人可以提供任何建议,将不胜感激
ps - 我希望一切都有意义
下面的角码:-
$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);
}
});
}
【问题讨论】:
-
网络服务器是否负载过重?如果线程池的线程用完了,您可能会看到事情开始排队,而不是立即并行运行。在这种情况下,考虑使用
async/await允许I/O 繁重的操作在执行I/O 时释放线程。相关答案:stackoverflow.com/a/15190138/700926 -
嗨,目前一切都在本地运行,并且正在使用 async / await。我大部分时间都在谷歌搜索。我们需要将 MVC 控制器设置为异步控制器吗?
-
您似乎担心 MVC 控制器是异步的,但如果您通过 angular(或任何 js 库)对其进行 ajax 调用,这应该与它无关。控制器不必是异步的,您也不必在服务器端使用 await。显示一些角度代码。
-
只是猜测,但如果您在 IIS 上禁用会话状态会怎样?使用 REST 一词的另一件事..实际上,您拥有的 RPC Web api 比 RESTful 更多。
-
我认为 Patko 可能正在做某事,因为您的 Angular 代码看起来不错。尝试将其更改(或添加)到您的 web.config:
。请注意——禁用会话将意味着您不能再使用 TempData。
标签: c# asp.net-mvc angularjs asp.net-mvc-4 asp.net-web-api