为什么没有同时处理带有基本身份验证的ASP.NET Web Api请求?

时间:2018-05-03 06:30:33

标签: c# asynchronous asp.net-web-api basic-authentication

我正在使用带有基本身份验证的ASP.NET Web Api。

我的问题是不会同时处理多个API调用。

假设我们从具有相同用户凭据的单台计算机多次调用此简单方法。如果你在一秒钟内运行5次,整个处理时间将是25秒而不是5秒。

    [System.Web.Http.HttpGet]
    [System.Web.Http.Authorize(Roles = @"domain\group")]
    public string Test()
    {
        var startTime = DateTime.Now;
        System.Threading.Thread.Sleep(5000);
        var endTime = DateTime.Now;
        return $"{startTime} {endTime}";
    }

这个问题的答案对我没有帮助:

我认为这是因为基本身份验证。

我也尝试将测试方法更改为async,如下所示:

    [System.Web.Http.HttpGet]
    [System.Web.Http.Authorize(Roles = @"domain\group")]
    public async Task<string> Test()
    {
        var startTime = DateTime.Now;
        await Task.Run(() => {
            System.Threading.Thread.Sleep(5000);
        });
        var endTime = DateTime.Now;
        return $"{startTime} {endTime}";
    }

我还尝试使用ApiController[SessionState(SessionStateBehavior.ReadOnly)]着色。

如何实现并发呼叫?或者我应该将身份验证更改为其他内容(必须连接到AD组!)?

1 个答案:

答案 0 :(得分:0)

@mjwills向我指出了正确的方向。代码完全没问题。问题是从Chrome运行并发请求。当我编写简单的C#测试应用程序时,一切都按预期工作。