gpt4 book ai didi

asp.net-mvc - 属性似乎根本不起作用

转载 作者:行者123 更新时间:2023-12-04 01:48:18 24 4
gpt4 key购买 nike

我在我的 Controller 操作上使用 [HandleError] 属性时遇到问题 - 它似乎根本不起作用(即过滤器是否存在并不重要 - 我得到相同的结果......)。当抛出异常时,我在“/”应用程序错误页面而不是我的自定义 View 中得到标准的红色服务器错误。

我在 SO 上找到了一些关于这个主题的其他线程,在大多数情况下,似乎在 web.config 中将 customErrors 选项设置为 On 解决了这个问题。它不适合我,所以我需要找到一个不同的解决方案。

我的 Controller Action :

[HandleError]
public ActionResult Index()
{
throw new Exception("oops...");
return View();
}

在我的 web.config 文件中
<customErrors mode="On"></customErrors>

我已经确保 Error.aspx 文件也在 Shared 目录中。我错过了什么?

我正在运行 ASP.NET MVC RC 刷新。

最佳答案

需要知道的两件事:

默认情况下,HandleError在开发服务器下运行时什么也不做。目的是向开发人员展示更多有用的信息:

public virtual void OnException(ExceptionContext filterContext) {
if (filterContext == null) {
throw new ArgumentNullException("filterContext");
}

// If custom errors are disabled, we need to let the normal ASP.NET
// exception handler execute so that the user can see useful
// debugging information.
if (filterContext.ExceptionHandled
|| ! filterContext.HttpContext.IsCustomErrorEnabled) {
return;
}

请注意,这种情况正是 customError应该控制。如果设置 customError="On"不会改变这种行为:
  • 检查你的语法。
  • 确保您正在编辑 Web.config在项目根目录中,而不是在 View 中。
  • 确保没有代码集 HttpContext.IsCustomErrorEnabled .
  • 如果所有其他方法都失败,请尝试在 Web.config 中关闭调试

  • 其次,存在某些类型的错误其中 HandleError永远不会处理,特别是 ASP.NET 编译错误。你没有说你遇到了哪个错误。

    关于asp.net-mvc - 属性似乎根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524905/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com