如何在ASP.NET MVC应用程序的Site.master视图中捕获异常或错误?

时间:2009-07-21 16:33:19

标签: asp.net-mvc

在site.master视图中,我有一些内联代码,如:

<%=(ViewData["Name"] as Model).Name %>

如果ViewData [“Name”]为null,则上面的代码将导致异常。然后我想向用户显示自定义的错误视图。我所做的是设置错误映射是web.config,如:

   <customErrors mode="On" defaultRedirect="~/Error/Unknown">
        <error statusCode="404" redirect="~/Error/NotFound" />
        <error statusCode="403" redirect="~/Error/NoAccess" />
    </customErrors>

我的错误控制器是:

 public class ErrorController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult NotFound(string aspxerrorpath)
        {
            this.ViewData["HttpError::AspxErrorPath"] = aspxerrorpath;
            this.Response.StatusCode = (int)HttpStatusCode.NotFound;
            return this.View("NotFound");
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult NoAccess()
        {
            Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            return View("NoAccess");
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult Unknown()
        {
            Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            return View("Unknown");
        }
}

但我无法捕捉错误。我会像

那样在borwoser中得到错误 '/'应用程序中的服务器错误。   运行时错误......

这意味着未捕获错误。 如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

ASP.Net MVC中的自定义错误页面由[HandleError]操作过滤器属性处理。有关如何使用它的详细信息,请参阅ScottGuDanny Tuppenny's博客文章。

This question也可能与您的问题有关。