首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET自定义404返回200 OK而不是404未找到

ASP.NET自定义404返回200 OK而不是404未找到
EN

Stack Overflow用户
提问于 2008-12-07 05:26:13
回答 6查看 87K关注 0票数 82

在尝试为谷歌网站管理员工具设置我的网站后,我发现我的自定义ASP.NET 404页面没有返回404状态代码。它显示了正确的自定义页面,并告诉浏览器一切正常。这被认为是软404或假404。谷歌不喜欢这样。所以我找到了很多关于这个问题的文章,但我想要的解决方案似乎不起作用。

我要使用的解决方案是将以下两行添加到自定义404页面的Page_Load方法后面的代码中。

代码语言:javascript
复制
Response.Status = "404 Not Found";
Response.StatusCode = 404;

这不管用。页面仍然返回200OK。然而,我发现如果我将以下代码硬编码到设计代码中,它将正常工作。

代码语言:javascript
复制
<asp:Content ID="ContentMain" ContentPlaceHolderID="ContentPlaceHolderMaster" runat="server">

<%
    Response.Status = "404 Not Found";
    Response.StatusCode = 404;
%>

 ... Much more code ...

</asp:content>

该页正在使用母版页。我正在web.config中配置自定义错误页面。我真的更喜欢使用代码隐藏选项,但如果不在设计/布局中放入hack内联代码,我似乎无法让它工作。

EN

回答 6

Stack Overflow用户

发布于 2010-06-23 07:28:32

我遇到了一个类似的问题,我想将一个自定义页面显示为404 (这是ASPX),它在本地主机上工作得很好,但一旦远程访问者连接上,他们就会得到通用的IIS404。

这个问题的解决方案是添加

代码语言:javascript
复制
Response.TrySkipIisCustomErrors = true;

在更改Response.StatusCode之前。

通过Rick Strahl http://www.west-wind.com/weblog/posts/745738.aspx找到

票数 29
EN

Stack Overflow用户

发布于 2010-09-22 08:06:06

尝试调用Response.End()跳过呈现...

代码语言:javascript
复制
Response.Status = "404 Not Found";
Response.StatusCode = 404;
Response.End();
return;
票数 12
EN

Stack Overflow用户

发布于 2012-04-03 16:05:06

IIS7解决方案是将以下代码添加到您的web.config文件中:

代码语言:javascript
复制
<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>

http://forums.asp.net/t/1563128.aspx/1

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/347281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档