ASP.NET не разрешает одновременные запросы для одного и того же сеанса; Это означает, что пользователь может сделать только 1 запрос за один раз.
Например, скажем, у нас есть Test1.aspx
:
public partial class Test1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["test"] = 1;
System.Threading.Thread.Sleep(int.Parse(Request.QueryString["timeout"]));
}
}
... и Test2.aspx
:
public partial class Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["test"] = 1;
Label1.Text = DateTime.Now.ToString("dd/MM/yy HH:mm:ss");
}
}
Когда мы посещаем Test1.aspx?timeout=10000
, а затем сразу после посещения Page2.aspx
, второй запрос должен будет ждать 10 секунд, пока первый запрос не завершится.
Я только что узнал об этом сегодня и уже 5 лет пользуюсь ASP.NET! Я действительно не верил этому, пока не прочитал его внизу страницы MSDN ( Обзор состояния сеанса ASP.NET ).
Итак, есть ли способ вызвать параллелизм? То есть, кроме ускорения страниц или перемещения длинного кода в фоновый поток. Я знаю, что вы можете сделать сеанс доступным только для чтения, но я не совсем уверен, что это практический вариант.