自定义 403 页面适用于一种环境,而不适用于另一种环境
Posted
技术标签:
【中文标题】自定义 403 页面适用于一种环境,而不适用于另一种环境【英文标题】:Custom 403 page works one environment and not another 【发布时间】:2016-05-10 13:25:00 【问题描述】:在我的 ASP.NET MVC Web 应用程序中,我尝试发送带有 404 和 403 响应的自定义错误页面。我可以使用 Global.asax.cs 中的以下代码在本地 IIS 上执行此操作。无需 web.config 支持。
protected void Application_EndRequest()
if (Context.Response.StatusCode == 404)
Response.Clear();
var rd = new RouteData();
rd.DataTokens["area"] = "";
rd.Values["controller"] = "Error";
rd.Values["action"] = "NotFound";
IController c = new ErrorController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
else if (Context.Response.StatusCode == 403)
Response.Clear();
var rd = new RouteData();
rd.DataTokens["area"] = "";
rd.Values["controller"] = "Error";
rd.Values["action"] = "Forbidden";
IController c = new ErrorController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
但是,当我将相同的代码部署到我的测试环境时,它不起作用。在我的测试环境中,我仍然收到 403 响应,但我没有看到我的自定义 Forbidden 视图。我只是从 IIS 获得默认的 403 视图。更奇怪的是 404 视图在两种环境中都有效。我整天都在比较 web.config 文件和其他 IIS 设置,试图确定我的测试环境有什么不同,但没有运气。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您在测试服务器上的该路径上是否真的被禁止(用户权限,无读取)?
测试服务器是否与您的开发机器运行相同的 IIS?可能需要更改一些服务器端配置。
【讨论】:
是的,我无法访问正确的资源。然后响应具有状态代码 403,但浏览器中呈现的标记不是我的自定义视图,就像我访问我的 licall IIS 时那样。我的本地IIS是v10,而测试环境是v7。以上是关于自定义 403 页面适用于一种环境,而不适用于另一种环境的主要内容,如果未能解决你的问题,请参考以下文章
SPFx Web 部件的 CSS 适用于它但不适用于页面的其余部分?
CORS 适用于 plnkr,但不适用于浏览器:“响应具有 HTTP 状态代码 403”
自定义 UIViewController 过渡动画适用于演示,但不适用于解雇
FBRequestConnection startForCustomAudienceThirdPartyID:nil 适用于模拟器,而不适用于设备