在我的ASP.NET MVC Web应用程序中,我正在尝试发送包含404和403响应的自定义错误页面。我可以在我的本地IIS上使用Global.asax.cs中的以下代码执行此操作。无需支持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设置来尝试确定我的测试环境有什么不同但没有运气。任何帮助将不胜感激。
答案 0 :(得分:0)
您是否在测试服务器上的该路径上禁止(用户权限,不读取)?
测试服务器是否与您的开发机器运行相同的IIS?可能是某些服务器端配置要更改。