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

Mau*_*uro 9 asp.net google-widget http-status-code-404

我有一个带有自定义404页面的ASP.NET 2.0网站.如果未找到内容,则网站将使用aspxerrorpath =/mauro.aspx添加查询字符串来提供自定义404页面.404页面本身的HTTP状态为200.要尝试解决此问题,我已添加

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.StatusCode = 404;
    }
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是:

  1. 如何使小部件显示为内联?
  2. 如何将错误页面呈现为404,其中包含所请求文件的原始名称和路径,以便在我请求mauro.aspx时获取404页面的内容,但是使用mauro.aspx的URL?(我假设我必须在begin_request global.asax文件中进行一些URL重写,但是在我做任何傻事之前都要确认这一点.)

mat*_*ant 10

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

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


Mau*_*uro 1

我已经通过在 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这对于性能至关重要,您每次请求时都会检查文件是否存在。 (3认同)