我正在使用带有基本身份验证的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组!)?
答案 0 :(得分:0)