2011-06-23 11 views
7

Estoy tratando de mostrar una página de errores del cliente en ASP.NET cuando la base de datos no funciona. Uso el modo Servidor SQL para contener los datos de la sesión. El problema es que nunca se llama a la página de errores personalizados.¿Cómo llegar a la página Errores personalizados en ASP.NET cuando el proveedor de estado de sesión está inactivo?

Dado que los datos de la sesión y la base de datos están en el mismo servidor, ¿esto no redirige a la página de error personalizada? Supongo que la aplicación web no se ha cargado en este momento. Al usuario se le presenta el seguimiento de pila para la falla de conexión de estado de sesión.

Parece que necesitamos algo que se encuentre frente a la carga inicial del sitio web para verificar la conectividad a la base de datos. ¿Alguna idea sobre cómo implementar esto?

+2

¿Puede proporcionar lo que tiene ahora en su web.config? –

+0
+0

Quizás esto arroje algo de luz http://aspnetresources.com/articles/CustomErrorPages –

Respuesta

1

Agregue algo como esto a su web.config?

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
    <error statusCode="403" redirect="NoAccess.htm" /> 
    <error statusCode="404" redirect="FileNotFound.htm" /> 
</customErrors> 

Puede leer más información here

Si es su SqlSessionState que está fallando, debe manejar el error correspondiente en caso Application_Error en Global.asax

Usted puede leer más información here

+0

¿Cómo sé el código de estado cuando el DB está inactivo? – GoldenUser

+0

¿Tampoco golpea el punto de depuración si coloco alguno dentro del evento Application_Error? – GoldenUser

+0

Si no especifica un código de estado, se lo empuja a la redirección predeterminada. – FlyingStreudel

1

Creo que el error proviene del hecho de que debido a que está utilizando un proveedor de estado de sesión sin memoria (que es la base de datos), d la conexión de la base de datos tiene una falla, entonces en realidad hay un error percibido en la configuración web (no en la aplicación). Tengo un problema similar, en el que estoy usando AppFabric Cache para mi proveedor de estado de sesión, pero cuando el servicio de caché de AppFabric está inactivo, aparece la página Error de configuración.

Debido a esto, no puede utilizar la solución customErrors como ya ha sugerido FlyingStreudel, ya que no es un error en su aplicación, sino más bien en la carga de la configuración.

He buscado una forma de resolver esto, pero no he podido encontrarlo. Espero que esta pregunta se contesta, me tiene confundido ya con las diversas opciones de configuración de error ...

Actualización: Después de investigar esto por un tiempo ahora, parece que mi problema viene del hecho de que las causas SessionStateModule el proveedor de estado de la sesión de caché de AppFabric para intentar conectarse a DataCache (que no está disponible) y se lanza una excepción (probablemente tiempo de espera) a alguna parte. Como esto sucede en el Init del módulo HTTP, parece que no hay forma de evitar la pantalla amarilla de la muerte.

No me sorprendería que el problema del póster original sea el mismo: la conexión con el servidor SQL que se produce en la inicialización del SessionStateModule.

+0

Creo que tal vez la respuesta es escribir un módulo Http personalizado [http://msdn.microsoft. com/en-us/library/ms227673.aspx] – jamiebarrow

+0

O tal vez no, dado que el orden de ejecución de los módulos aparentemente no es predecible [http://forums.asp.net/t/1101427.aspx/1?HttpModule+execute + orden] – jamiebarrow

+0

"Para cada evento, los controladores de eventos para cada módulo se ejecutan en el orden en que los módulos se configuran en la sección de configuración . Los controladores de eventos global.asax se ejecutan al final." [http://learn.iis.net /page.aspx/381/aspnet-20-breaking-changes-on-iis-70/] – jamiebarrow

Cuestiones relacionadas