2

私のアプリケーションには、このソリューションと非常によく似た例外処理があります: http://www.devcurry.com/2012/06/aspnet-mvc-handling-exceptions-and-404.html

私のアプリには厄介なバグがあり、SQL が他のプロセスでデッドロックする可能性があります。これはめったに発生しませんが (このため、毎日 1 ~ 2 件のリクエストが失敗します)、それでも発生します。

SQL デッドロック時にページを自動的に更新するにはどうすればよいですか (そして、get 要求でエンド ユーザーからこの方法でエラーを非表示にします)?

Application_Error 関数で実行できますか? または、HandleErrorAttribute のオーバーライドされた OnException で?

編集:

作成した BaseController のいくつかのコードをモックアップしました。

protected override void OnException(ExceptionContext filterContext)
{
    Exception ex = filterContext.Exception;
    SqlException sex = ex as SqlException;

    if (sex != null && sex.Number == 1205)
    {
       Log.Error("Transaction deadlocked with the following exception:");
       Log.Exception(sex);

       //I need to write the logic that refreshes the page here.
    }
    else
    {
       Log.Error("Application error with the following exception:");
       Log.Exception(ex);
    }

    base.OnException(filterContext);
}

リフレッシュ部分で助けが必要です。

4

2 に答える 2

0

コントローラのOnException()メソッドをオーバーライドすることで対処します。ソリューションの均一性と乾燥性を維持するためにオーバーライドが行われるカスタムベースのコントローラーからすべてのコントローラーを継承するのが最適です。

于 2012-08-13T13:01:08.373 に答える
0

前に次のコードを追加するだけですbase.OnException(filterContext);

// Stop any other exception handlers from running
filterContext.ExceptionHandled = true;
于 2015-01-19T10:58:16.220 に答える