小编Mic*_*l S的帖子

在ASP.NET Core中启用来自同一会话的并发请求

编辑:这显然是在浏览器中测试的问题,而不是代码.默认情况下,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}";
}
Run Code Online (Sandbox Code Playgroud)

当我从同一浏览器中的多个选项卡快速请求时,每个选项卡之间需要5秒钟.当我使用多个浏览器时,情况并非如此,它会在5秒钟内响应多次.

在搜索解决方案时,我一直在寻找在ASP.NET中禁用会话状态的方法,但对Core来说却没有.

就会话而言,我使用的是默认的API项目模板,而我没有采取任何措施来专门启用/设置会话状态.

有没有办法摆脱ASP.NET Core中的会话状态?或者是否有更好的解决方案来启用并发请求?

c# concurrency session asp.net-core-mvc asp.net-core

7
推荐指数
1
解决办法
2548
查看次数