2010-03-30 15 views
19

Duplicar posibles:
How to configure IIS to serve my 404 response with my custom content?ASP.NET MVC: ¿Cómo se sirve el contenido al devolver el código de estado 404?

me gustaría servir a una página fácil de usar "no encontrado" en mi aplicación ASP.NET MVC mientras que proporciona un código de estado 404. (basado en this answer)

Ya tengo el mecanismo de cómo atrapar una ruta no válida y la página 404 personalizada está servida por mi acción ErrorController/Handle404.

Mi implementación actual de Handle404:

public ActionResult Handle404() 
    { 
     Response.StatusCode = 404; 
     return View("NotFound"); 
    } 

Actualmente, IIS sirve la página como 404 - File or directory not found. The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable. (la página estándar de IIS, no es mi usuario contenido amigable)

¿Cómo puedo incluir el código de estado 404 en el resultado servido por la acción Handle404 mientras se sigue publicando el contenido?

Respuesta

14

Configuración

Response.TrySkipIisCustomErrors = true; 

hizo el truco.

0

Ya estás haciendo lo correcto. Puedes mirar a Fiddler para confirmar esto.

Sin embargo, no hay garantía de que un navegador respete su contenido. Wikipedia notes:

Internet Explorer (antes de Internet Explorer 7), sin embargo, no se mostrarán las páginas personalizadas a menos que sean mayores de 512 bytes, optando en lugar de mostrar una página de error "amigable". Google Chrome incluye una funcionalidad similar, donde el 404 se reemplaza con sugerencias alternativas generadas por los algoritmos de Google, si la página tiene menos de 512 bytes de tamaño.

Algunos intentos de prueba y error y el masaje de su vista pueden ser necesarios para llegar a una página que varios navegadores realmente elegirán para mostrar.

+1

Tenga en cuenta que la página que estoy viendo proviene del IIS, no de mi navegador web – Marek

Cuestiones relacionadas