我正在尝试使用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错误以及如果应该的话,该怎么做的指导?谢谢。
发布于 2010-06-18 14:34:35
当您对页面未找到错误执行重定向时,这本质上是由web服务器进行的异常处理。你会得到一个200的响应,但只是一个漂亮的页面,上面写着-“嗨,你要找的东西不在这里。”如果没有重定向/自定义错误页面,浏览器只能靠自己的设备来查看404并向最终用户显示某种类型的错误。在这种情况下,可能会记录404错误,因为必须发生该错误才能获得重定向。您不应该需要更改响应代码,除非您有理由这样做(例如,未经授权的内容请求,您可能希望返回404,而不是说未授权)。
至于你的代码,它应该是这样的:
Response.StatusCode = 404;
但是,如果您在自定义404错误页上发送了404错误,如果您将在IIS中遇到一些疯狂循环。404 ->自定义错误页(返回404) ->自定义错误页(返回404) ->等。
https://stackoverflow.com/questions/3070180
复制相似问题