为什么不同时处理请求?

时间:2015-05-07 04:22:29

标签: asp.net concurrency webforms

我在测试页面中使用此代码测试并发请求:

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 相关的任何内容?但我有残疾人。

1 个答案:

答案 0 :(得分:0)

我在这里得到答案: Simultaneous requests to a HTTP Handler not working

  

它与Web服务器或应用程序无关,而仅仅是   与浏览器行为有关。看来,如果你打开几个标签   并在Firefox或Chrome浏览器中导航到相同的URL   浏览器按顺序发出请求,即它等待一个请求   在完成下一个之前完成。打开两个浏览器并制作两个   请求导致预期的行为