2009-05-19 16 views
26

Supongamos que tengo un método en mi controlador que se llama a través de una llamada jQuery AJAX. P.ej. Me gustaría eliminar un usuario. Cuando todo va bien, devuelvo nuevo contenido ('ok') y salgo del método.¿Cómo debería el servidor asp.net (mvc) devolver el error a la llamada jquery ajax para que quede atrapado en la devolución de llamada por error?

¿Qué debo hacer cuando ocurre un error? Me gustaría indicarlo mediante un código de estado apropiado, para que mi llamada de error se llame llamada. ¿Por qué código de estado? Lea aquí: How do you trigger the "error" callback in a jQuery AJAX call using ASP.NET MVC?

Sin embargo, el enfoque no funciona porque IIS7 devuelve su propio mensaje (solicitud incorrecta) en lugar de mi mensaje de error personalizado.

Además de que hay otras dos capturas:

  1. que tiene que trabajar con IIS6, así
  2. IE8 no devuelve la cadena 'Solicitud incorrecta'. Dentro de la devolución de llamada de error la propiedad request.responseTest es nula.

devolución de llamada El error podría tener este aspecto: de error: function (petición) {alert (request.responseText);}

Respuesta

30

Ajuste del Response.StatusCode es lo correcto a hacer. Para corregir el manejo de error "útil" de IIS, establezca la propiedad HttpResponse.TrySkipIisCustomErrors. Puede leer más sobre esto here.

+0

HttpResponse.TrySkipIisCustomErrors no funciona con IIS6 – stej

+0

El comportamiento de IIS 7 que está viendo es exclusivo de IIS 7 y debe abordarse específicamente. Lee los enlaces en mi respuesta. –

+0

Probablemente no entiendo. Los enlaces provistos son solo acerca de IIS 7, pero también necesito una solución para IIS 6 (como se indica en (1)) – stej

Cuestiones relacionadas