Frage

Ich habe eine 2.0 MVC-Site, die die SQL Server als Sitzungsstatus-Manager nutzt. Ich versuche zu Konto für einen Netzwerkfehler, bei dem meine Seite die Verbindung zum SQL-Server verliert sich.

Für sehr einfache Testzwecken verwende ich Application_Error (object sender, EventArgs e) in der Datei Global.asax den Fehler zu protokollieren und dann leite ich den Benutzer auf eine allgemeine Fehlerseite. Das Problem entsteht, wenn auf die allgemeine Fehlerseite die Session State Manager versuchen Weiterleitung erneut zu verbinden und löst eine Ausnahme, wenn es nicht die Application_Error verursachen kann () Funktion wieder aufgerufen werden. Dies führt zu einer Endlosschleife.

Gibt es eine Möglichkeit alle Versuche zu deaktivieren, um den Sitzungsstatus SQL Server für eine bestimmte Maßnahme in einer Steuerung zu verbinden?

War es hilfreich?

Lösung

Für jedermann in der Zukunft ich dieses Problem gelöst, indem Sie diesen Code in der Datei global.asax verwenden:

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top