我在测试页面中使用此代码测试并发请求:
aspx标记:
Request arrived: <asp:Label ID="lblRequestArrived" runat="server" /> <br/>
Request completed: <asp:Label ID="lblRequestCompleted" runat="server" /> <br/>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
lblRequestArrived.Text = DateTime.Now.ToString("hh:mm:ss tt");
System.Threading.Thread.Sleep(5000);
lblRequestCompleted.Text = DateTime.Now.ToString("hh:mm:ss tt");
}
我在浏览器中打开了3个标签,在所有标签中粘贴了网址,然后快速(逐个)发出请求。我找到了这些输出:
TAB1
Request arrived: 10:02:42 AM
Request completed: 10:02:47 AM
TAB2
Request arrived: 10:02:47 AM
Request completed: 10:02:52 AM
TAB3
Request arrived: 10:02:52 AM
Request completed: 10:02:57 AM
我做错了吗?为什么这些请求被序列化?我怎样才能使这些并发?
[我已经测试了它在IIS上的发布(发布模式;页面中有EnableSessionState = "False"
)。]
更新 我尝试在3种不同的浏览器中打开该页面。但是,这次它似乎同时工作。这是什么意思?与 SessionState 相关的任何内容?但我有残疾人。
答案 0 :(得分:0)
我在这里得到答案: Simultaneous requests to a HTTP Handler not working
它与Web服务器或应用程序无关,而仅仅是 与浏览器行为有关。看来,如果你打开几个标签 并在Firefox或Chrome浏览器中导航到相同的URL 浏览器按顺序发出请求,即它等待一个请求 在完成下一个之前完成。打开两个浏览器并制作两个 请求导致预期的行为