C# 路径'/Views/Shared/Error.cshtml';找不到
我的基地控制器里有这个C# 路径'/Views/Shared/Error.cshtml';找不到,c#,asp.net-mvc,error-handling,C#,Asp.net Mvc,Error Handling,我的基地控制器里有这个 protected override void OnException(ExceptionContext filterContext) { if (filterContext.ExceptionHandled) { return; } var logger = new Logger(); logger.LogError(filterContext.Exception, ControllerContext.Route
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”
但根据这一点,这应该是可行的
这怎么可能呢?我想你不需要全名,因为这是默认页面。试试看
filterContext.Result = new ViewResult
{
ViewName = "Error",
ViewData = new ViewDataDictionary()
{
{"exception", filterContext.Exception}
}
};
我希望这对你有用 我想你不需要全名,因为这是默认页面。试试看
filterContext.Result = new ViewResult
{
ViewName = "Error",
ViewData = new ViewDataDictionary()
{
{"exception", filterContext.Exception}
}
};
我希望这对你有用 真奇怪。然而,
ViewData
初始化为新对象可能是这种行为的原因。为了确认这一点,您可以进行其中一项更改--1)使用ViewData返回ViewResult 2)而不是创建新的ViewResult对象,将其定义为filterContext.Result=this.View(“~/Views/Shared/Error.cshtml”,filterContext.Exception)
。传递给视图的异常对象可以通过ViewData.Model
object访问。这很奇怪。然而,ViewData
初始化为新对象可能是这种行为的原因。为了确认这一点,您可以进行其中一项更改--1)使用ViewData返回ViewResult 2)而不是创建新的ViewResult对象,将其定义为filterContext.Result=this.View(“~/Views/Shared/Error.cshtml”,filterContext.Exception)
。传递给视图的异常对象可由ViewData.Model
object访问。