Пользовательские страницы ошибок 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-адрес в браузере нетронутым."