Проверяя мой журнал elmah, я вижу, что получаю запросы «слишком длинный URL». Ошибка:
System.Web.HttpException (0x80004005): The length of the URL for this request exceeds the configured maxUrlLength value.
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)
Вот такие запросы я получаю:
/ index.php / блог / запись / the_ten_deceptions_of_the_datetimepicker / + [PLM = 0] + GET + HTTP: /www.visualhint.com/index.php/blog/post/the_ten_deceptions_of_the_datetimepicker / + [0,23778,23037] + -> + [N] + POST + HTTP: /www.visualhint.com/index.php/blog/post/the_ten_deceptions_of_the_datetimepicker / + [0,0,2007]
(не удивляйтесь php ... до того, как стать сайтом asp.net mvc, мой сайт работал на php, и теперь мне нужно перенаправить этот вид старых URL-адресов в мой новый формат URL, который хорошо работает когда URL останавливается на /index.php/blog/post/the_ten_deceptions_of_the_datetimepicker)
Что может генерировать эти запросы? Это звучит злонамеренно?
У меня настроены пользовательские ошибки, поэтому я, хотя такой запрос, будет перенаправлен на мою страницу пользовательских ошибок, но это не так. Вместо этого люди получают типичный желтый экран (пожарный упомянул, что это 400 плохих запросов). Если вы посмотрите на вышеприведенную трассировку стека, она очень короткая, и исключение, похоже, обнаруживается очень рано (Application_BeginRequest даже не вызывается). Можно ли показать свою пользовательскую страницу с ошибкой или я могу, по крайней мере, перенаправить на свою домашнюю страницу при возникновении такого исключения?
Я попытался добавить строку для ошибки 400 в моем файле web.config:
<customErrors mode="RemoteOnly">
<error statusCode="400" redirect="/" />
</customErrors>
Это перенаправляет на главную страницу справа, но добавляет полный URL-адрес в значение строки запроса aspxerrorpath.
Спасибо за вашу помощь.