ASP.Net: IE6 делает недопустимые запросы - PullRequest
3 голосов
/ 06 октября 2009

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

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

Это запрос в вопросе:

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

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

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

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

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

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, так что я предполагаю, что они связаны.

Спасибо за вашу помощь!
Daniel

Ответы [ 7 ]

2 голосов
/ 20 октября 2009

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

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

Что указало на ошибку в IE (и, возможно, другиебраузеры), где неверный DOCTYPE XHTML заставляет браузер сделать неверный запрос к ScriptResource.axd.Мы решили эту проблему, изменив XHTML DOCTYPE на 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" >

До:

<!DOCTYPE html>
<html>
1 голос
/ 19 октября 2009

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

1 голос
/ 19 октября 2009

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

0 голосов
/ 21 октября 2009

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

-doctype (соответствует ли отправляемая информация? IE6 требователен)

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

0 голосов
/ 18 октября 2009

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

<system.web>
    <machineKey
        validationKey='SOME KEY'
        decryptionKey='OTHER KEY'
        validation='SHA1'/>
</system.web>
0 голосов
/ 18 октября 2009

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

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

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

0 голосов
/ 15 октября 2009

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

...