Как избежать пользовательской/серверной ошибки на веб-сайте?

У меня есть веб-приложение asp.net, расположенное на сервере. Я хочу избежать всех пользовательских и серверных ошибок с моего сайта.

Для этого я использовал

<customerrors mode="RemoteOnly" defaultredirect="~/ErrorPage/TryAgainLater.aspx"> <error redirect="~/ErrorPage/PageNotFound.aspx" statuscode="404"> </error></customerrors>

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

Предположим, что страница "http://Exaple.com/Careers.aspx" доступна на моем сайте, а затем

Случай 1. http://Exaple.com/Careersss.aspx "Он работал корректно в соответствии с приведенным выше правилом".

Случай 2. http://Exaple.com/!@##Careersss.aspx "Не работает" Примечание: здесь я добавляю специальный символ

Случай 3: http://Exaple.com/Careersss.aspxxxx "Не работает" Примечание: добавьте символ после ".aspx"

случай 4: http://Exaple.com/Careersss.aspx/!@!@!@! "Здесь не работает дизайн работ". Примечание. Добавьте '/' со специальным символом.

пожалуйста, помогите мне, когда пользователь получит случай 2,3,4, тогда они автоматически перенаправляются на страницу с ошибкой.

Спасибо заранее.

2 ответа

Для вышеуказанной проблемы мы должны изменить настройку IIS, пожалуйста, обратитесь к:

http://www.braintrove.com/id/46/page/2#Configure-IIS-for-custom-error-pages

http://blogs.msdn.com/b/webtopics/archive/2008/05/28/iis-7-0-http-error-pages.aspx


Если вы не хотите изменять настройки IIS, вы можете установить собственный обработчик для 404 ошибок в Global.asax. Просто добавьте этот метод в наш файл кода Global.asax.cs:

protected void Application_EndRequest(object sender, EventArgs e)
{
 HttpResponse response = HttpContext.Current.Response;
 if (response.StatusCode == 404 && response.SubStatusCode == 0)
 {
 response.Redirect("/test/TryAgainLater.aspx?error=NotFound");
 response.End();
 }
}

Если проблема не устранена, и вы все еще получаете страницу ошибки 404, добавьте этот параметр в файл web.config:

<configuration>
 <system.webserver>
 <modules runallmanagedmodulesforallrequests="true">
 </modules></system.webserver>
</configuration>

licensed under cc by-sa 3.0 with attribution.