ASP.NET Server no procesa las páginas de forma asincrónica

Tengo una página con el botón y quiero cargar 2 cuadrículas de datos con datos de forma asincrónica pulsando el botón.

Este es el código de la página, uso jquery para hacer llamadas a otras 2 páginas que me darán html.

   #wait { position:absolute; top:0px; right:10px; width:200px; z-index:1000; vertical-align:middle; text-align:center; background: #febf00; display:none; }  <script src='' type="text/javascript">  $(function () { $('#wait') .ajaxStart(function () { $(this).show(); }) .ajaxStop(function () { $(this).hide(); }); $('input:button').live('click', loadData); }); function loadData() { $.get("Source.aspx", {}, function (data) { $('#a1').html(data); }, "html"); alert('This alert is asynchronous (1st)'); $.get("Source2.aspx", {}, function (data) { $('#a2').html(data); }, "html"); alert('This alert is asynchronous (2nd)'); }  
Please wait

Luego tengo 2 páginas aspx, Source1.aspx y Source2.aspx. Solo contienen un gridDataView y un pequeño código en el evento OnLoad.

  
<asp:SqlDataSource ID="dsTest" runat="server" ConnectionString="" ProviderName="">

Lado del servidor:

 Thread.Sleep(5000); dsTest.SelectCommand = "SELECT 'test1', 'test2', 'test3'"; this.gridTest.DataSourceID = "dsTest"; this.gridTest.DataBind(); 

Y lo mismo para la segunda página, pero con diferentes datos para la grilla.

Lo que tengo como resultado es que ambas alertas suceden a la vez, pero las cuadrículas se cargan una tras otra, es decir, la primera cuadrícula aparece después de 5 segundos, y luego la segunda aparece después de otros 5 segundos. Ese es el servidor en realidad no los procesa al mismo tiempo.

¿Qué estoy haciendo mal y cómo debería organizar todo para que funcione como lo necesito?

Esto sucede porque la sesión bloquea las lecturas de la página.
Por lo tanto, cuando la página se está cargando, la sesión bloquea todas las demás solicitudes hasta que finaliza y envía la página.

Para hacer que funcione necesitas ether para deshabilitar la sesión en estas páginas, ether use handler que no tiene por locking de sesión predeterminado.

Preguntas relativas

Intentando hacer que el método web sea asíncrono
Aplicación web bloqueada al procesar otra aplicación web al compartir la misma sesión
¿Qué contadores de perfmon son útiles para identificar los cuellos de botella de ASP.NET?
Reemplazando la sesión de ASP.Net por completo