2009-03-05 10 views
10

Estoy trabajando en IIS6, ASP.NET, VS2008. El sitio web utiliza un controlador de error personalizado para detectar errores 404 y servir una página alternativa. Cuando se presentan con una url de la forma:IIS 404 Error personalizado no funciona como se esperaba

http://srv/crimson/articles/index

Todo funciona perfectamente. Pero una url de la forma:

http://srv/crimson/blog.aspx

Dónde blog.aspx no existe, se produce el siguiente mensaje:

Error de servidor en la aplicación '/ carmesí'. Descripción: HTTP 404 ...

Cuando intento depurar, no se tocan ninguno de los puntos de interrupción en mi controlador 404. Entonces parece que algo está captando la solicitud más temprano. ¿Dónde? ¿Y cómo puedo obtener que pase la solicitud a mi controlador?

Editar Gracias a los que respondieron, pero ninguna de esas ideas funcionó. He decidido atacar el problema de otra manera.

Respuesta

10

Es posible que desee probar esto:

En IIS6:

  • "propiedades" abiertas para su sitio web
  • ir a la pestaña "Inicio guía"
  • clic en "Configuración "
  • busque la extensión" .aspx "
  • Haga clic en "editar"
  • verificación de la casilla de verificación que dice "verificar que el archivo existe"

edición

Y qué pasa con esto: http://msdn.microsoft.com/en-us/library/h0hfz6fc(VS.80).aspx

<customErrors defaultRedirect="sorry.htm" mode="On"> 
    <error statusCode="404" redirect="NotFound.aspx"/> 
</customErrors> 

Desde 'RemoteOnly 'especifica que los errores personalizados se muestran solo a los clientes remotos y que los errores de ASP.NET se muestran al host local.

1

ASP.Net tiene una configuración de errores personalizada propia.

Vaya a la configuración ASP.Net de su directorio virtual (aplicación web) y haga clic con el botón derecho en -> ASP.Net -> Editar configuración -> Errores personalizados.

+0

No estoy seguro de lo que quiere decir. Establecí un error personalizado en mi directorio virtual. Haga clic con el botón derecho en -> Propiedades -> Errores personalizados. Eso es lo que debería funcionar pero no funciona. Si te refieres a algo más, no puedo encontrarlo. – Jon

6

hmm, Assaf tiene razón, pero para agregar a su respuesta necesito publicar algún código.

Sí, Assaf significa algo más ASP.NET ofrece su propio manejo de errores, configurado a través del web.config. Puede administrar esto a través del complemento de Administración de IIS o directamente en el archivo web.config.

Dentro del elemento > < system.web usted debe tener:

<customErrors defaultRedirect="sorry.htm" mode="RemoteOnly"> 
    <error statusCode="404" redirect="NotFound.aspx"/> 
</customErrors> 

puede configurar una página diferente para cada código de error HTTP, o dejar que el redireccionamiento por defecto a todos ellos de manejar.

Encontrará que realmente necesita configurar estas páginas de error en ambos los errores personalizados de IIS y la configuración de ASP.NET, de lo contrario terminará en esta situación - algunas páginas van a su 404 y otros usan un valor predeterminado que no has personalizado.

También debe asegurarse de que su página 404 personalizada realmente devuelva un encabezado 404 para garantizar que los motores de búsqueda, etc. lo traten correctamente.

Response.StatusCode = 404; 
Response.StatusDescription = "Not found"; 
0

Quizás tenga 500, por lo que no se activa la redirección para 404. Puede centrarse en este error 500 al principio.

Cuestiones relacionadas