我想在开发期间或在服务器本地提供有用信息时显示 YSOD,但在其他情况下显示半通用页面。我知道我可以在 web.config 中设置defaultRedirect
应用程序的<customErrors>
配置标签的属性,但我宁愿做一些处理来生成一个信息稍微好一点的页面。
我所有的控制器都继承自一个中央 BaseController 类,我在该类中重写了 OnException(基本上像这样):
protected override void OnException(ExceptionContext filterContext) {
//if something really bad happened and we get inside this if,
//just let the YSOD appear because there isn't anything we can do
if (filterContext == null)
return;
LogException(filterContext.Exception);
//insert answer for question here:
if (FigureOutIfDetailedYsodWouldBeDisplayed(filterContext))
return;
//what to actually do for end users
filterContext.ExceptionHandled = true;
filterContext.Result = View("ErrorPage", GetErrorModel(filterContext));
}
我应该如何实现FigureOutIfDetailedYsodWouldBeDisplayed
(答案不必是代码,指向正确方向的指针就可以了)?我当前的实现检查原始 url 是否存在“//localhost”,但是这个解决方案感觉很笨拙并且不能一直工作(例如,如果开发人员有一个主机条目来输入除 localhost 之外的其他内容:我们的要求应用程序曾经有)。