2

我的应用程序中有一个与此解决方案非常相似的异常处理:http: //www.devcurry.com/2012/06/aspnet-mvc-handling-exceptions-and-404.html

我的应用程序中有一个令人讨厌的错误,其中 sql 可能与其他进程死锁。这种情况很少发生(每天有 1-2 个请求因此失败),但它仍然会发生。

如何在 sql deadlock 上自动刷新页面(并在获取请求时以这种方式向最终用户隐藏错误)?

我可以在 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 回答