使用ASP.NET MVC,ELMAH和自定义错误页面进行适当的异常处理

时间:2009-08-21 12:38:39

标签: asp.net-mvc exception-handling elmah custom-error-pages

考虑以下情况:

有一个ASP.NET MVC应用程序,它利用ELMAH进行集中式ExceptionLogging。 Controller使用HandlerError属性进行标记,以捕获特定类型的异常并向用户显示视图。例如

[HandleError(ExceptionType = typeof(ModelSpecificException), View = "Exceptions/ModelSpecific")]
public partial class HeavyController : Controller
{
  // Constructors and ActionResults are following here...
}

到目前为止,这是按预期工作的。我现在面临的问题是,“ModelSpecific”错误页面需要ViewData中的一些对象。有没有人提示填充以下类型

的ViewPage的ViewData字典
System.Web.Mvc.ViewPage<HandleErrorInfo>

我想到的另一个想法是,Controller可能会用于ErrorHandling和各自的ActionResults。但目前我还不了解如何实现这一目标。

非常感谢任何帮助...

最好的问候,

戈登

1 个答案:

答案 0 :(得分:0)

由于您的异常类和视图都是特定于模型的,您是否可以在异常中存储所需的额外数据?

if(badCondition)
{
    throw new ModelSpecificException("a bad thing happened", extraData);
}

在您的视图中,您可以通过Server.GetLastError()获取异常,然后将其强制转换为正确的类型以通过属性访问额外数据。这可能是一种更简洁的方法,因为它将异常视为模型并使您远离ViewData集合。