async jquery调用异步mvc控制器

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/