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 он не отображает, где он должен. Если я добавлю его в контент, я получу "неизвестную ошибку" на строчке 226 символа 79 или около того; если я добавлю его в раздел заголовка, над содержимым появятся поля поиска. В Firefox все работает нормально.
Итак, мои проблемы:
- Как сделать виджет встроенным?
- Как сделать так, чтобы страница ошибки отображалась как 404 с исходным именем и путем запрашиваемого файла, чтобы при запросе mauro.aspx я получал контент для страницы 404, но с URL-адресом mauro.aspx? (Я предполагаю, что мне придется сделать некоторые перезаписи URL в файле begin_request global.asax, но я хотел бы, чтобы это было подтверждено, прежде чем я сделаю что-нибудь глупое.)
2 ответа
Я обработал 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, это было бы здорово!
В ASP.NET 3.5 SP1 появился новый режим перенаправления, который теперь можно использовать, чтобы он не перенаправлял. Он показывает страницу с ошибкой, но сохраняет тот же URL:
"Также хорошо для перенаправлений URL. Если вы установите для redirectMode в web.config значение"responseRewrite", вы можете избежать перенаправления на пользовательскую страницу ошибки и оставить URL-адрес в браузере нетронутым".