我正在尝试遵循 this link 中的示例和 this one但我没有显示错误页面,而是收到了 HTTP 500 内部服务器错误。
我有 <customErrors mode="On" />
在 webconfig 中设置。我什至尝试应用 [HandleError]
过滤到 Controller 类。我也试过没有。 Error.aspx 也存在于/Views/Shared/中,因此不可能是找不到文件的情况。
我在 Controller 的操作方法中抛出了一个 DivideByZero 异常。我想遵循该示例,以便我可以为需要它们的所有操作指定一个单独的错误页面。
我在创建的空白项目中使用 aspx View 引擎。这应该不是原因吧?。我也为此使用了母版页。有什么我可能会遗漏的吗?
谢谢
编辑添加代码
我将此代码添加到一个新项目并创建了 web.config 条目 <customErrors mode="On" />
[HandleError]
public class HomeController : Controller
{
//
// GET: /Home/
[HandleError]
public ActionResult Index()
{
throw new DivideByZeroException();
return View();
}
}
它没有用!然后我评论了 DivideByZeroException 并在 aspx View 中添加了无效的 Model.Property。在这两种情况下,我都收到了内部服务器错误。我已经按照文档做了所有要做的事情。我看到很多其他人也有同样的问题,但也无法解决。这是 MVC 3 中的错误吗?
最佳答案
我想我已经弄清楚真正的问题是什么。我的主页索引位于母版页中。我将相同的母版页添加到 Visual Studio 开箱即用的默认错误页面,它对我有用。
文档需要更清楚地指出这一重要要求,...如果它确实是一个。
另一个惊人的发现是你不需要用 [HandleError]
来装饰你的 Controller 类。属性。它也适用于默认的错误 View 。如果您想要为您的操作或 Controller 提供特定的自定义 View ,您可以提供该属性。
像这样:
[HandleError(View = "CustomError")]
...其中 CustomError.aspx 只是 View 的共享文件夹或 View-Controller 文件夹本身中的另一个普通 aspx View 页面。
有没有人在没有将错误页面放在母版页中的情况下完成这项工作,其中引发错误的主调用页面在母版页中?
关于asp.net mvc errorhandler 未显示自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231165/