我创建了以下基本控制器以在 InvalidOperationException 上显示自定义 404(例如,未找到视图)。
public class HandlesViewNotFoundController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
//InvalidOperationException is thrown if the path to the view
// cannot be resolved by the viewengine
if (filterContext.Exception is InvalidOperationException)
{
if (!filterContext.ExceptionHandled)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new ViewResult { ViewName = "_404" };
filterContext.HttpContext.Response.StatusCode = 404;
Response.Clear();
// Clear the error on server.
Server.ClearError();
// Avoid IIS7 getting in the middle
Response.TrySkipIisCustomErrors = true;
}
}
base.OnException(filterContext);
}
}
出于某种原因,当我打开一个会触发 404 的页面时,它在本地调试时完美运行,在服务器上查看页面时在本地运行,但如果我查看远程服务器上检查的相同 url,内部服务器返回错误 (500)。
有任何想法吗?