2010-12-13 6 views
0

J'ai un site MVC 2.0 qui utilise SQL Server en tant que gestionnaire d'état de session. J'essaie de prendre en compte une erreur réseau dans laquelle mon site perd la connectivité au serveur SQL lui-même. Pour des tests très basiques, j'utilise Application Error (expéditeur d'objet, EventArgs e) dans le fichier Global.asax pour enregistrer l'erreur, puis je redirige l'utilisateur vers une page d'erreur générale. Le problème se pose lors de la transmission à la page d'erreur générale le Gestionnaire d'état de session tente de se connecter à nouveau et déclenche une exception lorsqu'il ne peut pas provoquer l'appel de la fonction Application_Error() à nouveau. Cela entraîne une boucle sans fin.Gestion des erreurs de connexion d'état de session ASP.NET MVC 2.0

Y a-t-il un moyen de désactiver toute tentative de connexion au serveur SQL d'état de session pour une action donnée dans un contrôleur?

Répondre

0

Pour tous ceux qui cherchent à l'avenir, je résolu ce problème en utilisant ce code dans le fichier global.asax:

protected void Application_Error(object sender, EventArgs e) { 
    // Get Exception 
    var ex = Server.GetLastError(); 
    // Looking for SqlTimeout, which is inner exception to HttpExecption 
    // when it occurs. 
    if (!typeof(HttpException).IsInstanceOfType(ex)) 
     return; 
    // Clear response. 
    HttpContext.Current.Response.Clear(); 
    // Check inner 
    if (ex.InnerException != null && typeof(SqlException).IsInstanceOfType(ex.InnerException)) { 
     // Clear error 
     Server.ClearError(); 
     // Redirect to basic html error. 
     Server.Transfer("/site_down.html", false); 
    } 
    else { 
     // Send to general error page. 
     Response.Redirect("~/error/", true); 
    } 
} 
Questions connexes