É possível forçar a simultaneidade de solicitação ao usar sessões do ASP.NET?
O ASP.NET não permite solicitações simultâneas para a mesma sessão; o que significa que um usuário pode fazer apenas uma solicitação por vez.
Por exemplo, digamos que temosTest1.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"]));
}
}
... eTest2.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");
}
}
Quando visitamosTest1.aspx?timeout=10000
e, imediatamente após a visitaPage2.aspx
, a segunda solicitação terá que esperar 10 segundos até que a primeira solicitação seja concluída.
Acabei de aprender isso hoje e uso o ASP.NET há 5 anos! Eu realmente não acreditei até ler na parte inferior de uma página do MSDN (Visão geral do estado da sessão do ASP.NET)
Então, existe uma maneira de forçar a simultaneidade? Ou seja, além de tornar as páginas mais rápidas ou mover o código de execução longa para um encadeamento em segundo plano. Estou ciente de que você pode fazer a sessão somente leitura, mas não tenho certeza de que essa seja uma opção prática.