Лучший способ реализовать 404 в ASP.NET

ЗДЕСЬ - это другая библиотека с открытым исходным кодом на GitHub с именем EvalEx.

В отличие от механизма JavaScript эта библиотека ориентирована только на оценку математических выражений. Кроме того, библиотека расширяема и поддерживает использование логических операторов, а также круглых скобок.

35
задан Ben Mills 20 March 2009 в 17:01
поделиться

7 ответов

Обработайте это в событии OnError своего Global.asax:

protected void Application_Error(object sender, EventArgs e){
  // An error has occured on a .Net page.
  var serverError = Server.GetLastError() as HttpException;

  if (serverError != null){
    if (serverError.GetHttpCode() == 404){
      Server.ClearError();
      Server.Transfer("/Errors/404.aspx");
    }
  }
}

В Вас ошибочная страница, необходимо удостовериться установку кода статуса правильно:

// If you're running under IIS 7 in Integrated mode set use this line to override
// IIS errors:
Response.TrySkipIisCustomErrors = true;

// Set status code and message; you could also use the HttpStatusCode enum:
// System.Net.HttpStatusCode.NotFound
Response.StatusCode = 404;
Response.StatusDescription = "Page not found";

можно также обработать различные другие коды ошибки в здесь вполне приятно.

Google будет обычно следовать за этими 302 и затем соблюдать 404 кода статуса - таким образом, необходимо будет удостовериться, что Вы возвращаете это на своей ошибочной странице.

43
ответ дан Toolkit 10 October 2019 в 12:23
поделиться

Можно использовать web.config для отправки 404 ошибок в пользовательскую страницу.

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>
14
ответ дан Robin Day 10 October 2019 в 12:23
поделиться

Самый легкий ответ: не делайте это в коде, но настраивает IIS вместо этого .

3
ответ дан Pontus Gagge 10 October 2019 в 12:23
поделиться

Вы используете это где-нибудь?

 Response.Status="404 Page Not Found"
2
ответ дан inspite 10 October 2019 в 12:23
поделиться

Я вижу, что установка 404 страниц в web.config является хорошим чистым методом, НО это все еще первоначально отвечает 302 перенаправлениями к ошибочной странице. Как пример, если Вы перешли к:

https://stackoverflow.com/x.aspx

Вы будете перенаправлены через 302 перенаправления к:

https://stackoverflow.com/404? aspxerrorpath =/x.aspx

, Что я хочу произойти, является этим:

http://www.cnn.com/x.aspx

нет никакого перенаправления. Запрос на недостающий URL возвращает 404 кода статуса с дружественным сообщением об ошибке.

2
ответ дан Community 10 October 2019 в 12:23
поделиться

Можно настроить сам IIS для возврата определенных страниц в ответ на любой тип ошибки HTTP (404 включенных).

0
ответ дан Assaf Lavie 10 October 2019 в 12:23
поделиться

Я думаю, что лучший способ состоит в том, чтобы использовать пользовательскую ошибочную конструкцию в Вашем web.config как ниже, это, позвольте нам, Вы обеспечиваете электричеством страницы для обработки всех различных кодов HTTP простым эффективным способом.

  <customErrors mode="On" defaultRedirect="~/500.aspx">
     <error statusCode="404" redirect="~/404.aspx" />
     <error statusCode="500" redirect="~/500.aspx" />
  </customErrors>
0
ответ дан James 10 October 2019 в 12:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: