【问题标题】:How to pass the thrown Exception to a custom error view?如何将抛出的异常传递给自定义错误视图?
【发布时间】:2015-01-06 10:12:00
【问题描述】:

有很多关于如何在 ASP.NET MVC 中设置自定义错误页面的好帖子,但还没有找到描述是否可以传递 Exception 对象本身的帖子,例如显示异常消息(针对用户错误)。

我设置了一个 ErrorController,其中包含 NotFound、BadReqest 和包罗万象的错误等操作和视图。我想打印出异常消息(如果存在),例如在 BadReqest 视图中(我也将 500 状态用于用户错误)。

有可能吗?我正在使用 IIS7.5 和 ASP.NET MVC5。

更新

这是一个示例场景。正在向Account/Users 发送请求。假设它需要我在操作中检查的一些特殊权限,如果没有满足,我会抛出一个带有文本"You don't have permission to see the list of users." 的适当异常。由于这个异常,我的自定义错误操作被自定义错误模块调用,但我不知道基本异常是什么(如果有的话)。我希望能够检查在我的 ErrorController 中引发了哪个异常(如果有),并将其消息包含在错误页面中。

【问题讨论】:

    标签: asp.net asp.net-mvc iis asp.net-mvc-5


    【解决方案1】:

    我认为您可以为所有错误创建一个PageLayout,并将错误文本 (Exception message) 从控制器传递到 ViewBag 中的页面

    更新:

    你可以传入异常 会话、Cookie、临时数据

    【讨论】:

    • 谢谢,但在 Cotnroller 和 View 之间传递不是问题(无论如何我更喜欢具有异常类型的强类型 View),但问题是如何在 ErrorController.BadReqest 操作中检索 Excetion例如。
    • 可以在Session,Cookie,TempData中传递异常
    • 也许您只需要在数据库中创建包含所有异常文本的表,并使用 ID(来自 DB)检查您需要哪个模块
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    相关资源
    最近更新 更多