Как правильно обрабатывать 404 ошибки в ASP.NET? - PullRequest
2 голосов
/ 11 октября 2010

В web.config вы можете добавить этот код для обработки 404 ошибок:

<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 и чтобы появилась другая страница.

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Чтобы ваша страница вернула статус 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
1 голос
/ 11 октября 2010

В разделе пользовательских ошибок используется HttpHandler для перехвата того факта, что у вас нет страницы, а затем перенаправляет ответ , так что сервер возвращает Site-Map вместо этого, что является доступный ресурс, поэтому статус 200 правильный, так как запрос был как раз для Site-Map.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...