gpt4 book ai didi

asp.net-mvc - 错误处理捕获 View 渲染异常的最后机会

转载 作者:行者123 更新时间:2023-12-02 15:39:01 25 4
gpt4 key购买 nike

我有 ErrorController,它可以自定义处理我的网站错误。

这是非常标准的:

public class ErrorController : BaseController
{
public ActionResult Error404(Exception ex)
{
return View();
}
public ActionResult Error500(Exception ex)
{
return View();
}
}

但是,如果 View 代码内部发生某些渲染异常(这可能会发生,因为页面有母版页(主布局)并且可能会发生不同的情况),那么我无法捕获该渲染异常。

通过实现 ActionFilterAttribute.OnResultExecuted,我确实可以看到该异常:

    public override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.Exception != null)
{
// not sure what to do here
} else base.OnResultExecuted(filterContext);
}

但在这种情况下,MVC 在异常发生后会查找 ~/Shared/Error.cshtml (包括此路径),并且我无法向用户提供错误 View 渲染异常 - - “最后机会异常(exception)”。

有什么办法可以解决吗?

最佳答案

这是一篇关于 ASP.Net MVC 中的异常处理的好文章,应该会有所帮助

Method 4:- Inheriting from “HandleErrorAttribute”

public class CustomHandleErrorAttribute: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
Exception ex = filterContext.Exception;
filterContext.ExceptionHandled = true;
var model = new HandleErrorInfo(filterContext.Exception, "Controller", "Action");

filterContext.Result = new ViewResult()
{
ViewName = "Error",
ViewData = new ViewDataDictionary(model)
};
}
}

然后将其连接到您的基本 Controller 。

关于asp.net-mvc - 错误处理捕获 View 渲染异常的最后机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919831/

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