0

SQLServerをセッション状態マネージャーとして使用するMVC2.0サイトがあります。サイトがSQLサーバー自体への接続を失うネットワークエラーを説明しようとしています。

非常に基本的なテストの目的で、Global.asaxファイルのApplication_Error(object sender、EventArgs e)を使用してエラーをログに記録してから、ユーザーを一般的なエラーページに転送します。この問題は、一般的なエラーページに転送するときに、Session State Managerが再接続を試み、Application_Error()関数を再度呼び出せない場合に例外をスローするときに発生します。これにより、無限ループが発生します。

コントローラ内の特定のアクションに対してセッション状態のSQLサーバーに接続する試みを無効にする方法はありますか?

4

1 に答える 1

0

将来を見ている人のために、私は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);
    }
}
于 2011-11-03T13:57:21.643 に答える