9

我有一个带有自定义 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 中它运行良好。

所以我的问题是:

  1. 如何使小部件内联显示?
  2. 如何使用请求的文件的原始名称和路径使错误页面呈现为 404,以便在请求 mauro.aspx 时获得 404 页面的内容,但使用 mauro.aspx 的 URL?(我假设我必须在 begin_request global.asax 文件中进行一些URL 重写,但希望在我做任何愚蠢的事情之前确认这一点。)
4

2 回答 2

10

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

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

于 2008-09-30T09:31:23.130 回答
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");
    }
}

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

于 2008-09-30T09:25:18.997 回答