Я столкнулся с недоумением, когда IIS выдает страницу ошибки по умолчанию (YSOD), когда кто-то пытается получить доступ к сайту с использованием недопустимого URL-адреса с пробелом (например: https://www.microsoft.com/en/%20/), даже несмотря на то, что мы настроили пользовательскую обработку ошибок, и это должно переслать на страницу 404.
Единственная причина, по которой это является проблемой для нас, заключается в том, что она была помечена во время недавнего Аудит безопасности, поскольку на странице ошибок ASP. NET (YSOD) отображаются путь к файлу и информация о версии.
В приведенной выше ссылке на ссылку Microsoft отображается тот же экран ошибок YSOD по умолчанию, но информация о пути и версии корректно подавляется.
ЕДИНСТВЕННЫМ релевантным ресурсом, который я нашел после нескольких дней поиска, является следующий пост 2009 года: ASP. NET пробел или% 20 в URL
Я не уверен, какая версия IIS использовалась в связанном посте, но это все еще относится к IIS 10 (win server 2016).
Как упоминается в связанном сообщении, когда возникает этот сценарий, выясняется, что основные области, где я мог бы ожидать, чтобы справиться с этим, на самом деле не работают должным образом.
Наш web.config имеет <customErrors mode="Off" />
и <httpErrors errorMode="Custom" existingResponse="Auto">
, поскольку мы обрабатываем ошибки с помощью пользовательского обработчика ошибок, который вызывается в Application_Error
, как определено в global.asax.
Я попытался переключить значения в <customErrors...>
и <httpErrors...>
несколько разных способов, но во всех случаях этот сценарий по-прежнему отображает тот же YSOD с информацией о пути и версии в нижней части страницы. Хотя мне удалось подавить область сведений об исключениях.
Мне интересно, сталкивался ли кто-нибудь с этой проблемой также в течение последнего десятилетия, как, как упоминает OP, мне не повезло, если я нашел какой-то другой ресурсы, связанные с этой конкретной c проблемой ...
Или использование правил переписчика, как упомянуто в сообщении, действительно лучшее решение?