不显示自定义错误页asp.net的MVC的ErrorHandler(asp.net mvc erro

2019-09-18 14:58发布

我想遵循的例子此链接和这一个 ,但不是显示错误页面,我得到一个HTTP 500内部服务器错误。 我有<customErrors mode="On" />设定在webconfig。 我甚至已经尝试应用[HandleError]过滤器到控制器类中。 我试着不和。 所述Error.aspx存在于/查看/共享/以及因此它不可能是没有找到的文件的情况。

我在我的控制器的动作方法抛出DivideByZero例外。 我想也这样做,这样我可以为所有需要它们的动作指定单独的错误页面。

我使用,我创建了一个空白项目的ASPX视图引擎。 这不应该是它的原因吧? 我还使用一个母版页这一点。 任何东西,我可能会错过?

谢谢

编辑-添加的代码

添加此代码到一个新的项目和由所述的web.config条目<customErrors mode="On" />

 [HandleError]
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        [HandleError]
        public ActionResult Index()
        {

            throw new DivideByZeroException();
            return View();
        }

    }

它没有工作! 然后我评论说DivideByZeroException并在ASPX视图刚添加和无效Model.Property。 在这两种情况下,我得到了内部服务器错误。 我所做的一切都是有工作要做按文档。 我看到很多有同样的问题其他人,不能够解决它。 这是MVC 3的错误吗?

Answer 1:

我想我已经想通了什么是真正的问题。 我的主网页指数是在一个母版页。 我加了相同的母版页中散发出来的Visual Studio框的默认错误页面,它为我工作。

文档需要指出的更清楚这个重要的要求,...如果它确实是一个。

另一个惊人的启示是,你不需要用装饰你的控制器类[HandleError]属性。 它的工作原理没有这种以及默认的错误观点。 如果你想为你的行动或控制器特定的自定义视图时,可以提供该属性。 像这样:

[HandleError(View = "CustomError")]

...其中CustomError.aspx是无论是对画面或视图 - 控制器文件夹本身的共享文件夹只是一个普通的ASPX视图页面。

有没有人有这方面的工作,而无需把错误页面的母版页,其中抛出错误的主要调用页面是在母版页?



Answer 2:

HandleError过滤器没有捕捉到所有的错误。 它没有赶上时引发外界控制器的动作/操作筛选例外。 此外,它不赶具有比其他状态代码HTTP异常500

所以,你必须确保在异常被抛出得到你不应该只在靠HandleError返回自定义错误页,但你也必须设置在一个自定义错误页customErrors节为好。

<customErrors defaultRedirect="error.htm" mode="On" 
  redirectMode="ResponseRewrite" />


Answer 3:

使你的web.config确保已激活的自定义错误:

<customErrors mode="On" />

另外,还要确保在~/Views/Shared/Error.aspx模板存在,因为这是会出错的情况下进行渲染。



文章来源: asp.net mvc errorhandler not showing custom error page