ЗДЕСЬ - это другая библиотека с открытым исходным кодом на GitHub с именем EvalEx.
В отличие от механизма JavaScript эта библиотека ориентирована только на оценку математических выражений. Кроме того, библиотека расширяема и поддерживает использование логических операторов, а также круглых скобок.
Обработайте это в событии 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 кода статуса - таким образом, необходимо будет удостовериться, что Вы возвращаете это на своей ошибочной странице.
Можно использовать web.config для отправки 404 ошибок в пользовательскую страницу.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
Самый легкий ответ: не делайте это в коде, но настраивает IIS вместо этого .
Вы используете это где-нибудь?
Response.Status="404 Page Not Found"
Я вижу, что установка 404 страниц в web.config является хорошим чистым методом, НО это все еще первоначально отвечает 302 перенаправлениями к ошибочной странице. Как пример, если Вы перешли к:
https://stackoverflow.com/x.aspx
Вы будете перенаправлены через 302 перенаправления к:
https://stackoverflow.com/404? aspxerrorpath =/x.aspx
, Что я хочу произойти, является этим:
нет никакого перенаправления. Запрос на недостающий URL возвращает 404 кода статуса с дружественным сообщением об ошибке.
Можно настроить сам IIS для возврата определенных страниц в ответ на любой тип ошибки HTTP (404 включенных).
Я думаю, что лучший способ состоит в том, чтобы использовать пользовательскую ошибочную конструкцию в Вашем web.config как ниже, это, позвольте нам, Вы обеспечиваете электричеством страницы для обработки всех различных кодов HTTP простым эффективным способом.
<customErrors mode="On" defaultRedirect="~/500.aspx">
<error statusCode="404" redirect="~/404.aspx" />
<error statusCode="500" redirect="~/500.aspx" />
</customErrors>