Nov*_*kov 26 asp.net session queuing blocking
在我看来,ASP.net排队使用相同会话ID的所有请求.假设你有3页.
Default.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"            |**************************************|
我想我的问题是如何禁用此功能.我知道让会话状态更可预测是有用的,但在我的情况下,长时间运行的报告页面加载会破坏用户的多任务处理能力.
dan*_*shr 21
这种行为是设计的; 不允许并发访问会话状态.具有相同SessionID的请求将被锁定,以防止其状态的潜在损坏.
要解决此问题,您可以在页面指令中禁用会话状态.
<%@ Page EnableSessionState="false" %>
请阅读http://msdn.microsoft.com/en-us/library/ms178581.aspx中的 "并发请求和会话状态" 以获取更多信息.
设置EnableSessionState="ReadOnly"将阻止该页面获得SessionState的独占锁定(但页面本身必须等待用户在加载之前完成其他非ReadOnly请求).
(这是我对ASP.net网站问题的回答的复制和粘贴:用户的长加载页面将用户的所有其他页面加载置于保持状态)
| 归档时间: | 
 | 
| 查看次数: | 6685 次 | 
| 最近记录: |