Мне кажется, что ASP.net ставит в очередь все запросы, которые используют один и тот же идентификатор сеанса. Скажем, у вас 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);
}
И сразу же после того, как вы нажмете любую другую страницу, на которую будет передан этот идентификатор сеанса, не имеет значения, делает ли она что-либо, позвоните в Test.aspx.
Последовательность загрузки такая же.
Request Timeline
"GET /" |*|
"GET /Hang.aspx" |******************************************|
"GET /Test.aspx" |**************************************|
Я думаю, мой вопрос в том, как отключить эту функцию. Я понимаю, что полезно иметь так, что состояние сеанса может быть более предсказуемым, однако в моем случае долговременная загрузка страниц отчетов убивает способность пользователей к многозадачности.