在我看来,ASP.net 将所有使用相同会话 ID 的请求排队。假设您有 3 页。
默认.aspx
protected void Page_Load(object sender, EventArgs e)
{
Session["asdf"] = "LOLZ";
}
如果不存在,点击此页面显然会创建一个新会话。
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=ibjphuv0aiafqi453tyze345; path=/; HttpOnly
然后你点击 Hang.aspx
protected void Page_Load(object sender, EventArgs e)
{
Thread.Sleep(10000);
}
在您点击任何其他将传递此会话 ID 的页面后,不管它是否执行任何操作,我们都将其命名为 Test.aspx。
加载顺序是这样的。
Request Timeline
"GET /" |*|
"GET /Hang.aspx" |******************************************|
"GET /Test.aspx" |**************************************|
我想我的问题是如何禁用此功能。我知道这样做很有用,这样会话状态可以更可预测,但是在我的情况下,长时间运行的报告页面加载正在扼杀用户的多任务能力。