Пользовательские страницы ошибок Google 404 и .NET

У меня есть веб-сайт ASP.NET 2.0 с пользовательской страницей 404. Когда контент не найден, сайт обслуживает пользовательскую страницу 404 с добавлением строки запроса aspxerrorpath =/mauro.aspx. Сама страница 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-адресом mauro.aspx? (Я предполагаю, что я необходимо сделать переписывание URL в 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");
    }
}

Теперь, если кто-нибудь может помочь мне с виджетами google, это было бы здорово!

Ответ 2

В ASP.NET 3.5 SP1 появился новый режим перенаправления, который теперь можно использовать, чтобы он не перенаправлялся. Он показывает страницу с ошибкой, но сохраняет URL одинаково:

"Также подходит для перенаправления URL-адресов. Если вы установите redirectMode в web.config на" responseRewrite ", вы можете избежать перенаправления на страницу пользовательской ошибки и оставить URL-адрес в браузере нетронутым."