AJAX novato aquí!
Por el momento, en mi aplicación web ASP.NET MVC, parece que mis solicitudes AJAX están siendo agrupadas o en cola, no estoy seguro.
No parece que se completen las solicitudes hasta que la solicitud anterior haya finalizado.
¿Cómo hago para que las solicitudes vuelvan de forma independiente?
No necesariamente quiero que alguien me dé la respuesta, pero tal vez algunos enlaces a buenos tutoriales o recursos que podrían ayudar. GraciasASP.NET MVC y Ajax, solicitudes concurrentes?
Respuesta
Estoy expandiendo la respuesta de Lachlan Roche, que es correcta.
El marco de trabajo de ASP.NET tendrá solicitudes de "un único subproceso" que se ocupen del ámbito de sesión (un recurso global), para evitar que una solicitud interfiera con otra. En WebForms, creo que puede usar la directiva de la Página para especificar que las páginas individuales no usen Session y, por lo tanto, no es necesario tratarlas sincrónicamente de esta manera.
El problema es que en ASP.NET MVC todas las solicitudes utilizan la sesión, porque se utiliza para implementar TempData. Puede desactivar completamente el estado de la sesión, como lo señaló Lachlan Roche, o puede tratar esto caso por caso.
Una posible solución podría ser iniciar sus propios hilos de fondo para procesar cualquier código de larga ejecución, de modo que la solicitud inicial se "complete" lo más rápido posible.
Sugiero usar jQuery para sus necesidades de ajax con asp.net mvc, lo he usado exclusivamente y ha sido extremadamente fácil.
En cuanto a tutoriales me gustaría ver en este: http://docs.jquery.com/Ajax
hay un montón de opciones para jugar y también sugieren la descarga de Firebug para que pueda ver las solicitudes lanzan desde la página de forma asíncrona y ver si se disparan y lo que return etc.
Al igual que el otro lado, la solicitud AJAX es asincrónica y no se pone en cola y todas vuelven independientemente cuando terminan, por lo que si observas en firebug será fácil ver lo que está pasando detrás las escenas y antes de que el depurador sea golpeado
downvotes en una respuesta de 3 años, ¿alguien le importa comentar? – Jimmy
No descarté esto, pero esto no es exacto: "La solicitud AJAX es asincrónica y no se pone en cola". Si bien es cierto que el cliente no los pone en cola, el servidor los pone en cola cuando el estado de la sesión está habilitado. –
ASP.NE T procesará las solicitudes en serie por sesión a menos que las sesiones estén configuradas como deshabilitadas o solo se lean en web.config mediante el atributo enableSessionState en el elemento de páginas.
Como esta es una configuración de página, esto no afectará a los controladores MVC y seguirán estando sujetos al procesamiento de solicitud en serie.
Curiosamente, incluso con sesiones deshabilitadas o configuradas para solo lectura, todavía podemos leer y escribir datos de sesión. Parece que solo afecta el bloqueo de la sesión que causa el procesamiento de solicitud en serie.
<system.web>
<pages enableSessionState="ReadOnly"/>
</system.web>
Las páginas también pueden tener una propiedad enableSessionState, aunque esto no es relevante para las vistas MVC.
<%@ Page EnableSessionState="True" %>
Acabo de comprobarlo. No funciona en ASP.NET MVC 5. Aunque Session = null, las solicitudes simultáneas siguen siendo secuenciales. –
Mismo problema que Lachlan Roche – Simon
Consulte la respuesta de Andy. Este atributo del controlador funcionó para mí: [SessionState (System.Web.SessionState.SessionStateBehavior.ReadOnly)] – RayLoveless
Con el lanzamiento de ASP.MVC 3 ahora puede agregar un atributo a sus controladores para marcar la sesión como de solo lectura, lo que permite que las acciones sean llamadas concurrentemente desde el mismo cliente.
sin sesión Auxiliar del Controlador:
Controlador sin sesión es otra gran característica nueva en ASP.NET MVC 3. Con sin sesión controlador puede controlar fácilmente su comportamiento de la sesión para los controladores. Por ejemplo, puede hacer que la sesión de su HomeController sea Disabled o ReadOnly, permitiendo la ejecución de solicitudes simultáneas para un solo usuario. Para más detalles, vea Concurrent Requests In ASP.NET MVC y HowTo: Sessionless Controller in MVC3 – what & and why?.
- de this DZone article.
Al agregar SessionState(SessionStateBehaviour.Disabled)
a su controlador, el tiempo de ejecución le permitirá invocar múltiples acciones concurrentemente desde la misma sesión del navegador.
Desafortunadamente, no creo que haya una manera de marcar una acción para desactivar solo la sesión cuando se invoca esa acción, por lo que si tiene un controlador que tiene algunas acciones que requieren la sesión y otras que no , deberás mover los que no están en un controlador por separado.
En versiones posteriores de ASP MVC se puede decorar clases de controlador individuales con el SessionStateAttribute
[System.Web.Mvc.SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class MyController : Controller
{
}
Puede implementar su propia gestión de sesión basada en acciones consultando el siguiente artículo http://sapoval.org/per-action-custom -sessionstatetributribute – mematei
Acabo de comprobarlo. No funciona en ASP.NET MVC 5. Aunque Session = null, las solicitudes simultáneas siguen siendo secuenciales. –
Mencione también [SessionState (System.Web.SessionState.SessionStateBehavior.ReadOnly)] –
Solicitud Bueno concurrente son más en aswell depende del navegador si fuego 10 solicitudes simultáneas supongamos que una acción con el Ajax en Mozilla y usando IE 8, entonces encontrarás que Mozilla tiene estilo para disparar una solicitud, espera su respuesta y luego dispara el segundo, y así sucesivamente ... para esto es una por una, mientras que en IE * este dispara alrededor de 6 solicitudes simultáneas a la vez al servidor.
La solicitud concurrente también depende del tipo de navegador.
Desde la versión 3.0 de .NET Framework liberado, puede utilizar enumeración "SessionStateBehavior" con SessionStateAttribute:
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class MyController : BaseController { }
- 1. ASP.NET (MVC) Outputcache y solicitudes concurrentes
- 2. ASP.NET MVC y AJAX
- 3. ASP.NET MVC HTML.AntiForgeryToken() con múltiples solicitudes AJAX desde una página
- 4. Solicitudes concurrentes en Appengine Python
- 5. ASP.NET MVC AJAX Calendario
- 6. Tabla paginada con ASP.NET MVC y AJAX
- 7. Live Search utilizando ASP.NET MVC y AJAX
- 8. ASP.Net MVC, AJAX y mejora progresiva
- 9. ASP.NET MVC AJAX con jQuery
- 10. asp.net mvc deshabilitar caché ajax
- 11. ASP.NET webforms + ASP.NET Ajax versus ASP.NET MVC y Ajax framework freedom
- 12. ¿Solicitudes de carpincho concurrentes de subprocesos múltiples?
- 13. Asp.net mvc fileupload via ajax
- 14. ASP.net MVC AntiForgeryToken sobre AJAX
- 15. ASP.NET AJAX vs jQuery en ASP.NET MVC
- 16. ASP.NET MVC ActionFilter - Determine si AJAX Request
- 17. 401 código de respuesta para solicitudes json con ASP.NET MVC
- 18. JSON y ASP.NET MVC
- 19. jQuery cuando/then/fail con solicitudes concurrentes de ajax: ¿Qué solicitud falló?
- 20. Dudas relacionadas con el manejo de errores en solicitudes Ajax en ASP.net MVC
- 21. Firefox no conserva encabezados personalizados durante el redireccionamiento de solicitudes Ajax: una solución ASP.NET MVC
- 22. ¿El enlace modelo MVC 2.0 funciona con solicitudes Ajax?
- 23. ¿Cómo se manejan las solicitudes de Ajax en Spring MVC?
- 24. ASP.NET MVC página de carga con AJAX
- 25. Validación de cliente ASP.NET MVC con vistas parciales y Ajax
- 26. manejo de excepciones en ASP.NET MVC y Ajax - [HandleException] filtrar
- 27. asp.net mvc 3 - ajax formulario de envío y validación
- 28. asp.net MVC y $ .ajax sobrecarga de rendimiento agregado
- 29. Autorizar el atributo y jquery AJAX en asp.net MVC
- 30. jquery ajax formularios para ASP.NET MVC 3
Por favor enviar el código de la petición AJAX y la acción del controlador que está manejando. – Lazarus