gpt4 book ai didi

asp.net-mvc - 即使禁用 session ,ASP.NET MVC 5 并发请求也会排队

转载 作者:行者123 更新时间:2023-12-03 23:29:25 24 4
gpt4 key购买 nike

在考虑否决或告诉我“谷歌它”之前,请更仔细地阅读问题。这是旧/经典问题,但旧/经典解决方案不再有效。这是在 Visual Studio 2013/2015 中重现的非常简单的场景:

1) 使用 MVC 模板创建 ASP.NET Web 应用程序:
enter image description here
enter image description here

2) 打开 Controllers\HomeController.cs 并将属性添加到 Controller 和“ sleep ” Action :

[SessionState( System.Web.SessionState.SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
public ActionResult Sleep(int? time)
{
System.Threading.Thread.Sleep(time ?? 3000);
return Content("OK");
}

public ActionResult Index()
{
...

3) 打开文件:Views\Home\Index.cshtml 并使用以下内容添加/替换内容 html:

<script>
function ReqClick() {
var startTime = Date();

$.ajax("/Home/Sleep")
.success(function () {
var log = $("#log");
var endTime = Date();
log.text(log.text() + "Start: " + startTime.toString() + " === " + endTime.toString());
});
};
</script>

<button type="button" onclick="ReqClick();">
Request
</button>
<div>
<textarea id="log" style="width:640px; height:480px"></textarea>
</div>


4) 运行它(如果您使用的是 IIS 或 IIS Express 或 Vs Dev Server,则无关紧要)- 打开主页/索引。点击 F12 打开开发工具,打开网络选项卡。在主页上快速单击“请求”按钮两次。您可以看到第二个请求花费了将近 6 秒:

enter image description here

enter image description here

在 Controller 的 Debug模式下,您可以看到 Session 为空:

enter image description here

Cookie 完全为空(ASP.NET session ID 不存在)
enter image description here

请让我知道我错过了什么?

将以下设置添加到 web.config 也无济于事:

<sessionState mode="Off"/>
<pages enableSessionState="ReadOnly"/>

最佳答案

当我用这个属性装饰我的 Controller 时,并发并行请求对我有用

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

它比上述禁用 session 状态更好,并在 MVC 3 中重新添加。 More info here

关于asp.net-mvc - 即使禁用 session ,ASP.NET MVC 5 并发请求也会排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33602155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com