【问题标题】:Path '/Views/Shared/Error.cshtml' was not found找不到路径“/Views/Shared/Error.cshtml”
【发布时间】:2018-05-28 05:15:34
【问题描述】:

我的基本控制器中有这个

protected override void OnException(ExceptionContext filterContext)
{
    if (filterContext.ExceptionHandled)
    {
        return;
    }

    var logger = new Logger();
    logger.LogError(filterContext.Exception, ControllerContext.RouteData.Values["controller"].ToString());

    filterContext.Result = new ViewResult
    {
        ViewName = "~/Views/Shared/Error.cshtml",
        ViewData = new ViewDataDictionary()
        {
            {"exception", filterContext.Exception}
        }
    };
    filterContext.ExceptionHandled = true;
}

我肯定有一个文件

Views/Shared/Error.cshtml

但是每当发生未处理的异常时,我都会在日志中收到此错误

找不到路径“/Views/Shared/Error.cshtml”。

但根据this article,这应该可行...

这怎么可能?

【问题讨论】:

  • 这很奇怪。然而似乎ViewData 初始化为新对象可能是这种行为的原因。只是为了确认这一点,您可以进行更改之一 --- 1) 返回 ViewResult 和 ViewData 2) 而不是创建新的 ViewResult 对象,将其定义为filterContext.Result = this.View("~/Views/Shared/Error.cshtml", filterContext.Exception)。传递给View的异常对象,可以通过ViewData.Model对象访问。

标签: c# asp.net-mvc error-handling


【解决方案1】:

我认为您不需要听到全名,因为它是默认页面。试试看

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

我希望这对你有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多