2010-10-11 2 views
2

В web.config вы можете добавить этот код, чтобы обрабатывать ошибки 404:Как вы правильно обрабатываете ошибки 404 в ASP.NET?

<customErrors mode="Off" defaultRedirect="ErrorPage.aspx"> 
    <error statusCode="404" redirect="/Site-Map"/> 
</customErrors> 

И это хорошо работает, как вы можете видеть на этом URL http://www.fundraising.com.au/thisisnotapage

Однако, в соответствии с этим сайтом http://gsitecrawler.com/tools/Server-Status.aspx кодом_ответа для этой несуществующей страницы 200, а не 404.

Пока эта страница http://www.nuenergy.com.au/thisisnotapage показывает 404 на http://gsitecrawler.com/tools/Server-Status.aspx и перенаправляет на другую страницу.

Как достичь более поздней версии ASP.NET? Мне нужен ответ, чтобы он был 404, а для другой страницы.

ответ

1

custom errors section employs the HttpHandler перехватить тот факт, вы не имеете страницы, а затем redirects the response так, что сервер возвращает Site-Map вместо который является доступным ресурсом, поэтому 200 статуса является правильным, поскольку его, как если бы запрос был для Site-Map в первом место.

Вы в конечном счете хотите обслуживать две версии Site-Map, тогда, когда это фактический запрос (200), но также и тот, который является пользовательским ответом на ошибку (404). Я бы создал другую версию страницы Site-Map, OnError-Site-Map, расширяя класс страниц, чтобы наследовать ее функции, но затем overriding the http response code, чтобы он обеспечивал 404 статус, который вы хотите, но только для этой расширенной версии. Затем вы помещаете это в раздел пользовательских ошибок в web.config.

1

Для вашей страницы, чтобы вернуть 404 состояния, добавьте следующий код в событие Page_Load:

Protected Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Response.Status = "404 Not Found" 

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