有条件地覆盖所有路由(MVC / ASP)

时间:2010-12-01 11:25:32

标签: c# asp.net-mvc

我有一个ASP.NET MVC网站,通过Web服务连接到数据库。

如果WebService不可联系,我想将用户重定向到一个页面,说明服务没有运行。目前它只是在WebService没有正确响应时崩溃。

实现这一目标的最佳方法是什么?我有很多控制器,因此为每个控制器编写错误捕获代码以用于这个特定情况将是繁琐的并且涉及大量代码重复。

4 个答案:

答案 0 :(得分:1)

您可以使用控制器上的HandleError属性捕获特定异常并重定向到错误页面。您也可以继承它并使用自定义逻辑覆盖OnException方法。

答案 1 :(得分:1)

一个简单的选择是编写一个基本控制器;覆盖你想要的方法(无论是之前调用(OnActionExecuting)还是异常OnException)),只需添加{{ 1}}到每个控制器。

另一个选择是使用执行相同工作的filter-attribute来装饰每个控制器。

答案 2 :(得分:1)

在其上找到了一个很棒的教程here。 实施它,它在全球范围内按预期工作。太好了!

<强>更新 实际上只有404的帮助,并没有正确处理它们。 我设法在stackoverflow上找到另一个完全回答它的问题 - 找到链接here

答案 3 :(得分:0)

您需要有一个基本控制器并覆盖OnException      protected override void OnException(ExceptionContext filterContext),即将 捕获控制器操作中所有异常的块