作者:李浩 | 来源:互联网 | 2023-02-01 13:04
编辑:这显然是在浏览器中测试的问题,而不是代码.默认情况下,Core中的会话将被禁用.
原始问题:
我正在开发一个Web API,它需要同时处理多个请求,即使是来自同一个客户端.它是一个ASP.NET核心MVC(1.1.2)应用程序,目前针对完整框架(4.5.2),主要是为了与其他库兼容.
当我第一次测试我的并发性时,我很惊讶这些请求根本不是并发的.我用Google搜索并发现ASP.NET不会同时处理会话中的请求,而是将它们排队.快速测试显示会话可能是罪魁祸首:
[HttpGet("sleep")]
public string Sleep()
{
Thread.Sleep(5000);
return $"Done at {DateTime.Now:u}";
}
当我从同一浏览器中的多个选项卡快速请求时,每个选项卡之间需要5秒钟.当我使用多个浏览器时,情况并非如此,它会在5秒钟内响应多次.
在搜索解决方案时,我一直在寻找在ASP.NET中禁用会话状态的方法,但对Core来说却没有.
就会话而言,我使用的是默认的API项目模板,而我没有采取任何措施来专门启用/设置会话状态.
有没有办法摆脱ASP.NET Core中的会话状态?或者是否有更好的解决方案来启用并发请求?