我试图在IIS7中使用重定向来使用自定义错误页面。这是我的代码:
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Pages/NotFound" responseMode="ExecuteURL" />
</httpErrors>
如您所见,行<remove statusCode="404" subStatusCode="-1" />
重置了状态代码,当我点击页面时,我找到了一个未找到的页面的状态代码200。这是处理未找到页面的正确方法吗?
我的理解是,即使我在我的网站中为不存在的页面显示一个不错的页面,我也希望返回404错误。我知道这是一个边缘案例,但我试图涵盖我的所有基础。
我重定向到的页面是一个.aspx页面,后面有c#代码。在我正在推出的页面中:
protected void Page_Load(object sender, EventArgs e)
{
Response.Status = "404 Not Found";
}
此代码似乎并没有实际执行任何操作。有没有人对我是否应该返回404错误有任何指导,如果是这样的话怎么办?感谢。
答案 0 :(得分:1)
当您为找不到页面错误执行重定向时,它实际上是Web服务器的异常处理。你会得到一个200响应,但只是一个很好的页面说 - “嗨,你在找什么不在这里。”如果没有重定向/自定义错误页面,浏览器将离开其自己的设备以查看404并向最终用户显示某种类型的错误。在此实例中可能会记录404错误,因为必须发生错误才能获得重定向。您不需要更改您的回复代码,除非您有理由(即,未经授权的内容请求您可能希望返回404而不是说未经授权)。
至于你的代码,它应该是这样的:
Response.StatusCode = 404;
但是,如果您在自定义404错误页面上发送了404错误,那么您将在IIS中遇到一些疯狂的循环。 404 - &gt;自定义错误页面(返回404) - &gt;自定义错误页面(返回404) - &gt;等