本文介绍了ASP.NET自定义404返回而不是404 200 OK未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

想设置我的网站谷歌网站管理员工具后,我发现我自定义ASP.NET 404页不返回404状态code。它显示正确的自定义页面,并告诉浏览器一切正常。这是考虑软404或虚假的404.谷歌不喜欢这一点。所以我发现在这个问题上的文章很多,但我想解决方案似乎并没有工作。

我要努力在以下两行加入到后面的自定义404页的Page_Load方法的code的解决方案。

  Response.Status =404未找​​到;
Response.Status code = 404;

这是行不通的。该页面仍返回200确定。然而,我发现,如果我硬code以下code到设计code它将正常工作。

 < ASP:内容ID =ContentMainContentPlaceHolderID =ContentPlaceHolderMaster=服务器><%
Response.Status =404未找​​到;
Response.Status code = 404;
%GT; ...更多code ...< / ASP:内容>

该页面使用母版页。而我在配置我的web.config的自定义错误页。我真的宁愿用后面的选项code,但我似乎无法使它没有把一个黑客直列code在设计/布局工作。


解决方案

解决方案:

问题,它横空出世,是使用母版页。我得到了它被后来的状态设置为code在页面生命周期中,母版页明显呈现被重置它的工作,所以我推翻渲染方法和之后的渲染完成设置。

 保护覆盖无效渲染(HtmlTextWriter的作家)
{
    base.Render(作家);
    Response.Status code = 404;
}

更多的工作可以做,以找出究竟当主页设置状态,但我会留给你。


原贴:

我能得到一个测试web应用程序工作正常,那么它至少显示自定义错误页,并返回404状态code。我不能告诉你什么是错了你的应用程序,但我可以告诉你,我做了什么:

1)编辑web.config中的自定义错误:

2) Added a 404.aspx page and set the status code to 404.

Thats about it, if I go to any page extension that is processed by Asp.Net and does not exist, my fiddler log clearly shows a 404, here is the header:

Now if I go to a page that is not processed by Asp.Net, like a htm file, the custom page does not show and the 404 that is configured by IIS is displayed.

Here is a post that goes into some more details that may be of use to you and your problem, my test does do a redirect to the new page so the url of the requested file is pretty much lost (except its in the query string).

http://stackoverflow.com/questions/152307/google-404-and-net-custom-error-pages

Header Spy Response:

HTTP/1.1 404 Not Found
Date: Sun, 07 Dec 2008 06:21:20 GMT

这篇关于ASP.NET自定义404返回而不是404 200 OK未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 13:03