2008-09-30 4 views
9

У меня есть веб-сайт ASP.NET 2.0 с пользовательской страницей 404. Когда контент не найден, сайт обслуживает пользовательскую страницу 404 с добавлением строки запроса aspxerrorpath =/mauro.aspx. 404 страница сама подается с HTTP статусом 200. Для того, чтобы попытаться решить эту проблему, я добавилGoogle 404 и .NET Пользовательские страницы ошибок

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.StatusCode = 404; 
    } 

Я добавил виджет Google и имеют две проблемы с ним. В Internet Explorer 7 он не показывает, где он должен. Если я добавлю его в контент, я получу «неизвестную ошибку» на char 79 line 226 или около того; если я добавлю его в раздел главы, окна поиска появятся над содержимым. В Firefox он отлично работает.

Так что мои вопросы:

  1. Как сделать виджет появится инлайн?
  2. Как сделать страницу ошибки визуализации как 404 с оригинальным имя и путь файла, который просил, чтобы, когда я прошу mauro.aspx я получаю содержимое для страницы 404, но с URL-адрес mauro.aspx? (Я предполагаю, что я придется сделать некоторые URL rewriting в 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, что было бы здорово!

+3

это производительность критически, вы проверяете, если файл существует или не каждый раз, когда на каждом запросе. – 2010-11-22 10:00:22

+0

Правильно, я мог бы сохранить результат в словаре или аналогично использовать, чтобы быстрее проверять ... – Mauro 2010-11-22 10:40:50

10

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^