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

时间:2020-03-06 14:54:51  来源:igfitidea点击:

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

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

我添加了Google小部件,并且有两个问题。在InternetExplorer7中,它不显示应显示的位置。如果将其添加到内容中,则会在char 79行226或者附近出现"未知错误";如果我将其添加到头部,则搜索框将显示在内容上方。在Firefox中工作正常。

所以我的问题是:

  • 如何使窗口小部件内联显示?
  • 如何使错误页面呈现为404,并带有请求的文件的原始名称和路径,以便当我请求mauro.aspx时,我获得404页面的内容,但具有URL mauro.aspx? (我假设我将不得不在begin_request global.asax文件中进行一些URL重写,但是在进行任何愚蠢的操作之前,请先确认这一点。)

解决方案

我已经在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小部件,那就太好了!

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

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

  • CustomErrorsSection.RedirectMode属性(MSDN)