在尝试为谷歌网站管理员工具设置我的网站后,我发现我的自定义ASP.NET 404页面没有返回404状态代码。它显示了正确的自定义页面,并告诉浏览器一切正常。这被认为是软404或假404。谷歌不喜欢这样。所以我找到了很多关于这个问题的文章,但我想要的解决方案似乎不起作用。
我要使用的解决方案是将以下两行添加到自定义404页面的Page_Load方法后面的代码中。
Response.Status = "404 Not Found";
Response.StatusCode = 404;
这不管用。页面仍然返回200OK。然而,我发现如果我将以下代码硬编码到设计代码中,它将正常工作。
<asp:Content ID="ContentMain" ContentPlaceHolderID="ContentPlaceHolderMaster" runat="server">
<%
Response.Status = "404 Not Found";
Response.StatusCode = 404;
%>
... Much more code ...
</asp:content>
该页正在使用母版页。我正在web.config中配置自定义错误页面。我真的更喜欢使用代码隐藏选项,但如果不在设计/布局中放入hack内联代码,我似乎无法让它工作。
发布于 2010-06-23 07:28:32
我遇到了一个类似的问题,我想将一个自定义页面显示为404 (这是ASPX),它在本地主机上工作得很好,但一旦远程访问者连接上,他们就会得到通用的IIS404。
这个问题的解决方案是添加
Response.TrySkipIisCustomErrors = true;
在更改Response.StatusCode之前。
通过Rick Strahl http://www.west-wind.com/weblog/posts/745738.aspx找到
发布于 2010-09-22 08:06:06
尝试调用Response.End()跳过呈现...
Response.Status = "404 Not Found";
Response.StatusCode = 404;
Response.End();
return;
发布于 2012-04-03 16:05:06
IIS7解决方案是将以下代码添加到您的web.config文件中:
<system.webServer>
<httpErrors existingResponse="Replace">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="404.htm" responseMode="File" />
<error statusCode="500" prefixLanguageFilePath="" path="500.htm" responseMode="File" />
</httpErrors>
</system.webServer>
https://stackoverflow.com/questions/347281
复制相似问题