Google 404 和 .NET 自定义错误页面

Posted

技术标签:

【中文标题】Google 404 和 .NET 自定义错误页面【英文标题】:Google 404 and .NET Custom Error Pages 【发布时间】:2010-09-14 05:12:54 【问题描述】:

我有一个带有自定义 404 页面的 ASP.NET 2.0 网站。当未找到内容时,该站点将提供带有 aspxerrorpath=/mauro.aspx 的查询字符串添加的自定义 404 页面。 404 页面本身的 HTTP 状态为 200。为了尝试解决此问题,我添加了

    protected void Page_Load(object sender, EventArgs e)
    
        Response.StatusCode = 404;
    

我添加了 Google 小部件,但有两个问题。在Internet Explorer 7 中,它不显示它应该显示的位置。如果我将它添加到内容中,我会在 char 79 第 226 行或其附近收到“未知错误”;如果我将它添加到标题部分,搜索框会出现在内容上方。在 Firefox 中它工作正常。

所以我的问题是:

    如何使小部件出现 内联? 如何制作错误页面 使用原始文件渲染为 404 文件的名称和路径 要求,以便当我要求 mauro.aspx 我得到的内容 404 页面,但 URL 为 毛罗.aspx? (我假设我会 必须做一些URL rewriting 在 begin_request global.asax 文件,但是 希望在我之前确认这一点 做傻事。)

【问题讨论】:

【参考方案1】:

您现在可以使用 ASP.NET 3.5 SP1 中的新重定向模式,因此它不会重定向。它显示错误页面,但保持 URL 相同:

“也适用于 URL 重定向。如果您在 web.config 中将 redirectMode 设置为“responseRewrite”,则可以避免重定向到自定义错误页面,并且保持浏览器中的 URL 不变。”

CustomErrorsSection.RedirectMode Property (MSDN)

【讨论】:

谢谢,但我们在本例中使用的是 .Net 2.0,但我会牢记 .net 3.5 sp1 信息。 射击我真的很抱歉,当我读完它时,我一定忘记了你帖子的 2.0 部分。我的错。 没问题,我可以用它作为将来使用 3.5 的参数:) 赞成,因为这仍然很有帮助,很高兴明确 2.0 在这方面被破坏了【参考方案2】:

我已经在 global.asax 文件中处理了 404

protected void Application_BeginRequest(object sender, EventArgs e)

    string url = Request.RawUrl;
    if ((url.Contains(".aspx")) && (!System.IO.File.Exists(Server.MapPath(url))))
    
        Server.Transfer("/Error/FileNotFound.aspx");
    

现在,如果有人可以帮助我使用 google 小部件,那就太好了!

【讨论】:

这对性能至关重要,您在每次请求时都检查文件是否存在。 正确,我可以将结果存储在字典或类似的字典中,以便更快地检查...

以上是关于Google 404 和 .NET 自定义错误页面的主要内容,如果未能解决你的问题,请参考以下文章

自定义 ASP.NET MVC 404 错误页面的路由

为啥在asp.net中使用自定义404页面时不存在的页面返回302状态

旧 ASP.Net 应用程序中的自定义错误页面不起作用

IIS配置404页面配置,IIS自定义404页面

自定义帖子类型和页面层次结构 - 错误 404

尝试从我的自定义 iOS 应用与 Google+ 共享时出现 404 错误