ASP.Net: IE6 делает недопустимые запросы

У меня есть работающий сайт, где каждая ошибка регистрируется и отправляется мне по электронной почте.

Я получаю много сообщений «Заполнение недействительно и не может быть удалено». ошибки при запросах к WebResource.axd. Присмотревшись, просьба ошибочна.

Это запрос, о котором идет речь:

/webresource.axd?d=mgqvdy8omlq71j1set2ida2&ampt=633700045603820000

И вот как это должно выглядеть:

/WebResource.axd?d=MgQvdy8OmLQ71j1SET2IdA2&t=633700045603820000

Обратите внимание на отсутствие заглавных букв и, что более важно, отсутствие ; после &амп.

Пользовательский агент такой:

UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)

Что это может быть?
Может ли реальный пользователь получать ошибки из-за этого?
Это что-то, что IE действительно делает неправильно?
Или это просто плохо написанный бот?

Это случается время от времени, но определенно не происходит со всеми нашими пользователями или даже со всеми нашими пользователями IE.


ОБНОВЛЕНИЕ: я также часто получаю сообщение "Недопустимый символ в строке Base-64". когда формы публикуются, также только из IE 6.0, поэтому я предполагаю, что они связаны.

Спасибо за помощь!
Дэниел


person Daniel Magliola    schedule 06.10.2009    source источник
comment
Я получаю то же самое на своем сайте ASP.NET MVC.   -  person John Gietzen    schedule 06.10.2009
comment
еще мысль, рекламируется ли этот сайт в Google AdWords?   -  person curtisk    schedule 15.10.2009
comment
Ваш сайт работает в веб-ферме?   -  person Darin Dimitrov    schedule 18.10.2009
comment
Сегодня у меня была точно такая же проблема, и она была исправлена ​​путем реализации ответа Дарина Димитрова (найденного в другом месте). Вы не указали, но у меня есть ферма серверов, и машинный ключ просто должен быть синхронизирован.   -  person caveman_dick    schedule 19.10.2009
comment
Вы правы, это также может быть проблема с ботами/хакерами. Мы довольно часто получаем подобные сообщения о недопустимом состоянии просмотра, иногда исчисляемые тысячами, а затем внезапно они прекращаются на несколько дней. Ни разу не удалось повторить.   -  person caveman_dick    schedule 19.10.2009
comment
У меня нет фермы серверов, это один сервер. Проблема в том, что IE6 (или какой-то прокси, или что-то в этом роде, хотя, если это прокси, интересно, почему я получаю только IE6 UA) искажает контент, который он отправляет на сервер, будь то URL-адрес или данные POST, это не сервер не может его расшифровать.   -  person Daniel Magliola    schedule 20.10.2009


Ответы (7)


Мы наблюдали аналогичные ошибки с исключениями ScriptResource.axd и Invalid Viewstate. В конце концов я нашел этот пост:

  1. Ошибка: /ScriptResource.axd: недопустимо состояние просмотра.

Это указывает на ошибку в IE (и, возможно, в других браузерах), когда недопустимый DOCTYPE XHTML заставляет браузер делать неправильный запрос к ScriptResource.axd. Мы решили проблему, изменив XHTML DOCTYPE на тип документа HTML5 и удалив атрибут xmlns из тега html. В любом случае наши страницы не были совместимы с XHTML.

От:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

To:

<!DOCTYPE html>
<html>
person Jeff Widmer    schedule 20.10.2009

Просто угадал, но у меня была аналогичная проблема с удалением/заменой специальных символов, когда я использовал IIS 7 для запуска некоторых сайтов. Оказалось, что это "функция безопасности" IIS - ее правила находятся в "urlscan.ini". Может быть, это поможет.

person DV.    schedule 19.10.2009

Если вы уже установили фиксированный MachineKey в своем web.config, то эта проблема, скорее всего, связана с тем, что прокси искажают запросы. Мы также получаем это с некоторыми из наших пользователей IE6, и я также видел, где прокси-серверы превращаются и в строку запроса (что неверно).

person Nicholas    schedule 19.10.2009

Поскольку это полуслучайный вариант, второй вариант в эта запись в блоге может помочь.

person MartW    schedule 15.10.2009
comment
Спасибо за Ваш ответ! Вы имеете в виду жестко закодированные значения CSS? Я определенно не помещал ничего подобного в наши таблицы стилей, и мы не используем никакого упакованного элемента управления, который выводит такие вещи (например, как это делает BasicDatePicker). Если вы не это имели в виду, извините, если я не понял - person Daniel Magliola; 15.10.2009
comment
Вы говорите, что /webresource.axd?d=mgqvdy8omlq71j1set2ida2&t=633700045603820000 - это точный запрос, вызывающий ошибку каждый раз? Я не говорю, что это обязательно жестко закодированный CSS, но какой ресурс создает этот запрос? - person MartW; 15.10.2009
comment
Нет, это не всегда один и тот же URL-адрес, вызывающий ошибку. Реальный ресурс меняется. Что всегда происходит, так это то, что оно будет преобразовано в & (без точки с запятой) и переведено в нижний регистр. - person Daniel Magliola; 15.10.2009

Поскольку URL-адрес, похоже, манипулируется, похоже, что это ошибка в прокси-программе. Возможно, вы сможете найти шаблоны в запрашиваемых диапазонах IP-адресов для идентификации определенных прокси-серверов или интернет-провайдеров.

Однако это на самом деле не объясняет постоянный IE6 UserAgent (если только прокси-сервер тоже не испортит это). Это может быть одна из многих ошибок IE (например, проблемы с gzip, отсутствующая ошибка 4k и т. д.), но обычно они ломают гораздо больше, чем просто перевод URL-адреса в нижний регистр и удаление одного символа. Вы можете временно отключить gzip, чтобы посмотреть, повлияет ли это на какой-либо эффект.

Вот вопрос с похожими симптомами и мой ответ содержит ссылки на некоторые ошибки IE.

person Josef Pfleger    schedule 18.10.2009

Вы можете попробовать установить фиксированный ключ машины в файле web.config. Для этого вы можете использовать генератор machineKey или создать свой собственный:

<system.web>
    <machineKey
        validationKey='SOME KEY'
        decryptionKey='OTHER KEY'
        validation='SHA1'/>
</system.web>
person Darin Dimitrov    schedule 18.10.2009
comment
у меня нет фермы серверов, это один сервер. Проблема в том, что IE6 (или какой-то прокси, или что-то в этом роде, хотя, если это прокси, интересно, почему я получаю только IE6 UA) искажает контент, который он отправляет на сервер, будь то URL-адрес или данные POST, это не сервер не может его расшифровать. - person Daniel Magliola; 20.10.2009

Вы можете проверить:

-doctype (соответствует ли он данным, которые вы отправляете? IE6 привередлив)

-набор символов

person jvenema    schedule 20.10.2009