2008-09-30 108 views
9

我有一个自定义404页面的ASP.NET 2.0网站。当找不到内容时,该网站将使用查询字符串添加aspxerrorpath =/mauro.aspx来提供自定义404页面。 404页本身送达的200的HTTP状态要尝试解决这个我添加Google 404和.NET自定义错误页面

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

我增加了谷歌小工具,并与它的两个问题。在Internet Explorer 7它不显示它应该在哪里。如果我将它添加到内容中,char 79行226或其附近会出现“未知错误”;如果我将它添加到头部部分,搜索框会出现在内容上方。在Firefox中,它工作正常。

所以我的问题是:

  1. 如何使小部件出现 内联?
  2. 如何让我的错误页面 呈现为与原来 名和文件是路径404 要求,这样,当我要求 mauro.aspx我得到了 404页的内容,但与网址 mauro.aspx? (我以为我会 必须做一些URL rewriting在 begin_request Global.asax文件,但 想这证实了之前我 做傻事。)

回答

1

我做这个处理的404在global.asax文件

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"); 
    } 
} 

现在,如果任何人都可以帮助我与谷歌小部件,这将是伟大的!

+3

这是性能的关键,你如果文件存在与否对每个请求每一次检查。 – 2010-11-22 10:00:22

+0

正确的,我可以将结果存储在字典或类似的使用,以更快地检查... – Mauro 2010-11-22 10:40:50

10

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

“对于URL重定向也很好如果将web.config中的redirectMode设置为”responseRewrite“,则可以避免重定向到自定义错误页面并离开浏览器中的URL不变。“