Pregunta

Tengo muchos enlaces rotos que no se están registrando. ¿Hay alguna forma de configurar IIS para enviarlos a través de ASP.NET para que mi rutina de registro 404 normal los atrape?

¿Fue útil?

Solución

Podrías usar el host MVC en el método IIS 6 Hack. Básicamente, configure un comodín.* Mapeo en IIS y haga que ASPNET_ISAPI.dll maneje esta solicitud, que es lo mismo que hacer que .NET maneje toda la solicitud. Puede experimentar una disminución de rendimiento (probablemente mínima), pero debería alcanzar su rutina de registro.

IIS 6 Hack

Otros consejos

Si está utilizando IIS7, puede usar el elemento de configuración HTTPERRORS. Lo que esto hace es (después de que se haya manejado la solicitud) verifica el código de respuesta que se ha empujado a la salida y le permite interceptar llamadas, como:

<httpErrors existingResponse="PassThrough">
    <remove statusCode="404" />
    <error statusCode="404" responseMode="ExecuteURL" path="/PageNotFound.aspx" />
</httpErrors>

Es muy parecido al mecanismo CustomErrors de ASP.NET, con la excepción de procesarse más adelante en la tubería. En el ejemplo anterior, le digo que ejecute la url /pagenotfound.aspx cuando se encuentre un 404. Sin embargo, debe tener cuidado, porque si envía un 404 desde la página Pagenotfound.aspx (¡por lo general lo haría!), Puede quedar atrapado en una redirección cíclica. Para darle la vuelta a esto, agregamos el siguiente atributo:

existingResponse="PassThrough"

Lo que esto hace es determinar si la respuesta actual ya tiene un cuerpo y, de ser así, pasarlo (no procese el código de estado).

Publiqué esto en mi blog hace un tiempo: http://www.fidelitydesign.net/?p=21

Espero que ayude :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top