Dan*_*son 8 c# asp.net-mvc asynchronous
如何让我的jquery方法调用我的mvc控制器和我的mvc控制器同时做两件事?
jquery代码很好.它只是调用方法并继续按我想要的方式进行.
$(document).ready(function () {
console.log("1");
getADsad();
console.log("2");
lala();
console.log("3");
});
function getADsad() {
$.ajax({
url: '/Configurator/Configure/Hello1',
type: 'POST',
dataType: 'json',
success: function (data) {
console.log(data + "hello1");
}
});
}
function lala() {
$.ajax({
url: '/Configurator/Configure/Hello2',
type: 'POST',
dataType: 'json',
success: function (data) {
console.log(data + "hello2");
}
});
Run Code Online (Sandbox Code Playgroud)
另一方面,我的C#代码不是一次做两件事:
[HttpPost]
public async Task<LoginViewModel> Hello1()
{
var str = await GetSlowstring();
return str;
}
[HttpPost]
public async Task<LoginViewModel> Hello2()
{
var str = await GetSlowstring();
return str;
}
public async Task<LoginViewModel> GetSlowstring()
{
await Task.Delay(10000);
LoginViewModel login = new LoginViewModel();
login.UserName = "HejsN";
return await Task.FromResult(login);
}
Run Code Online (Sandbox Code Playgroud)
如果正确完成,组合调用应该只需要10秒钟,但现在需要加倍.
我是否需要为呼叫创建新线程?或者这是由apppool自动完成的?
编辑:
dra*_*rax 13
基于Chrome控制台的图像,问题出在SessionState中.默认情况下,当应用程序使用SessionState时,ASP框架会串行处理来自单个用户的请求(以防止会话变量发生潜在的损坏).
对于某些情况,如果要为单个用户启用并行处理请求(并且不需要更新会话),则可以使用SessionState
控制器上的属性.
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
Run Code Online (Sandbox Code Playgroud)
更多细节可以在这里找到:http://www.stefanprodan.com/2012/02/parallel-processing-of-concurrent-ajax-requests-in-asp-net-mvc/
归档时间: |
|
查看次数: |
17429 次 |
最近记录: |