Cola de solicitud de sesión de ASP.net
session blocking (1)
Este comportamiento es por diseño; no se permite el acceso simultáneo al estado de la sesión. Las solicitudes con el mismo SessionID se bloquearán exclusivamente para evitar posibles daños a su estado.
Para evitar esto, puede deshabilitar el estado de la sesión en su directiva de página.
<%@ Page EnableSessionState="false" %>
Lea "Solicitudes concurrentes y estado de la sesión" aquí http://msdn.microsoft.com/en-us/library/ms178581.aspx para obtener más información.
El establecimiento de EnableSessionState="ReadOnly"
evitará que esa página obtenga un bloqueo exclusivo en el SessionState (pero la página misma tendrá que esperar que otras solicitudes que no sean de ReadOnly finalicen antes de la carga).
(Esta es una copia y pega de mi respuesta a esta pregunta en el sitio de ASP.net: la página de carga larga para el usuario coloca todas las demás cargas de página para el usuario en espera )
Me parece que ASP.net pone en cola todas las solicitudes que usan la misma ID de sesión. Digamos que tienes 3 páginas.
Default.aspx
protected void Page_Load(object sender, EventArgs e)
{
Session["asdf"] = "LOLZ";
}
Golpear esta página obviamente crearía una nueva sesión si no existe.
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=ibjphuv0aiafqi453tyze345; path=/; HttpOnly
Luego, presionas Hang.aspx
protected void Page_Load(object sender, EventArgs e)
{
Thread.Sleep(10000);
}
E inmediatamente después de presionar cualquier otra página a la que se le pasará esta ID de sesión, no importa si hace algo, llamémosla Test.aspx.
La secuencia de carga es así.
Request Timeline
"GET /" |*|
"GET /Hang.aspx" |******************************************|
"GET /Test.aspx" |**************************************|
Supongo que mi pregunta es cómo desactivo esta característica. Entiendo que es útil tenerlo para que el estado de la sesión sea más predecible, sin embargo, en mi caso, una carga larga de la página de informes está matando la capacidad de multitarea de los usuarios.