Робот Google вызывает .NET System.Web.HttpException - PullRequest
14 голосов
/ 07 июля 2011

У меня есть веб-сайт ASP.NET, смешанный с классическим ASP (мы работаем над преобразованием в .NET), и я недавно обновил .NET 1.1 до .NET 4.0 и переключился на интегрированный конвейер в IIS 7.

Поскольку эти изменения ELMAH сообщает об ошибках со страниц classic asp практически без подробностей (и с кодом состояния 404):

System.Web.HttpException (0x80004005)
   at System.Web.CachedPathData.ValidatePath(String physicalPath)
   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Но когда я сам запрашиваю страницу, ошибки не возникает,Все эти ошибки, отображаемые в ELMAH, вызваны сканером Googlebot (строка пользовательского агента).

Почему .NET обнаруживает ошибки для классических страниц asp?Имеет ли это отношение к интегрированному конвейеру?

Есть идеи, почему ошибка возникает только тогда, когда Google сканирует страницу, или как я могу получить более подробную информацию, чтобы найти основную ошибку?

Ответы [ 4 ]

14 голосов
/ 09 апреля 2013

Добавьте это в ваш файл web.config:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Этот отключает проверку по умолчанию , чтобы убедиться, что запрошенные URL-адреса соответствуют правилам пути Windows.

Чтобы воспроизвести проблему, добавьте %20 (пробел через URL) в конец URL, например, http://example.org/%20.Эту проблему довольно часто можно увидеть у поисковых роботов, когда они сталкиваются с ошибочно набранными ссылками с пробелами, например <a href="http://example.org/ ">example</a>.

Свойство HttpContext.Request.Url, похоже, сокращает конечное пространство, поэтому такие инструменты ведения журналов, как ELMAHне раскрывайте актуальную проблему.

1 голос
/ 07 июля 2011

Когда вы перешли от классического конвейера к интегрированному конвейеру, вы по существу переключили управление на .NET, то есть .NET вызовет ASP Parser.Это добавляет возможность для пользовательских модулей HTTP, закодированных в управляемом коде .NET, которые могут изменить вывод ответа или, в случае elmah, предоставить вам подробности регистрации.

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

Mozilla Firefox - лучший браузер для этогос User Agent Switcher addon

0 голосов
/ 25 июня 2015

Это применимо, только если вы используете Angular, но вы увидите это, если

<httpRuntime relaxedUrlToFileSystemMapping="false" /> (as mentioned in the previous answers)

и вы используете src вместо ng-src для тега изображения или скрипта, то есть

<img src="{{SomeModelValue}}" />

должно быть

<img ng-src="{{SomeModelValue}}" />

Это также может повлиять на теги A, где вы используете href вместо ng-href.

0 голосов
/ 07 июля 2011

Похоже, что сканеры Google переходят по ссылкам, которые больше не существуют. То есть на вашем сайте могут быть какие-то документы, которые ссылаются на другие документы, но они удалены.

Я не выгляжу серьезным, как для меня, так что вы можете отфильтровать это исключение.

...