【问题标题】:Proper Exception Handling with ASP.NET MVC, ELMAH and custom Error Pages使用 ASP.NET MVC、ELMAH 和自定义错误页面进行正确的异常处理
【发布时间】:2010-11-21 15:40:47
【问题描述】:

考虑以下情况:

有一个 ASP.NET MVC 应用程序利用 ELMAH 进行集中异常记录。控制器标记有 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>

我想到的另一个想法是,也许控制器可以用于带有相应 ActionResults 的 ErrorHandling。但目前我不知道如何做到这一点。

非常感谢任何帮助...

最好的问候,

戈登

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 1970-01-01
      • 2017-02-10
      • 2010-10-20
      • 2016-04-10
      • 2011-08-19
      • 2013-01-15
      • 2019-01-02
      • 2010-10-20
      相关资源
      最近更新 更多