2011-04-29 25 views
8

Tengo un dolor de cabeza al tratar de obtener un control programático completo sobre la representación de un error en IIS7 (modo integrado). Lo que quiero hacer es dar un error (página no encontrada, error interno del servidor, no autenticado, etc.), transferir la solicitud completa a un ASPX o HTML personalizado (prefiero este último) con el código de estado HTTP correcto.Manejo del código de estado de IIS7 y HTTP

Lo que quiero es que a IIS7 no le importe nada a lo que le puse el código de estado HTTP. No quiero que se maneje el error. Cuando configuro Response.StatusCode = (int)HttpStatusCode.NotFound, lo que deseo no es que IIS presente su propia página de error, sino que tal vez transfiera la solicitud a otro archivo.

he conseguido esto configuración estática para trabajar:

<configuration> 
    <system.webServer> 
    <httpErrors> 
     <clear /> 
     <error statusCode="404" path="/errors/404.html" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
</configuration> 

Aunque esto funciona, no me da control programático sobre qué hacer con la respuesta, dada una situación de error. La configuración es una buena alternativa, pero me gustaría poder establecer Response.StatusCode y renderizar algo completamente diferente al configurado 404.html en ciertas circunstancias (como una respuesta JSON si recibimos Accept: application/json), pero IIS7 no me lo permite. De ninguna manera.

Entonces, ¿qué diablos se supone que debo hacer? Intenté establecer HttpResponse.TrySkipIisCustomErrors Property, pero parece un gran truco y no parece funcionar de manera consistente. ¿Establecer realmente esta propiedad es la mejor práctica recomendada para obtener el comportamiento que deseo?

Por el momento, la sensación que me queda no es más que intenso odio hacia IIS7. ¿Puede alguien ayudarme a remediar esto demostrando que solo estoy siendo estúpido y que puedo tener un control total sobre la pila HTTP?

+0

¿Ha intentado utilizar un controlador HTTP en lugar de una página HTML estática? – sanpaco

Respuesta

Cuestiones relacionadas