ASP.NET ViewState дублируется при обратной передаче - PullRequest
1 голос
/ 13 февраля 2012

Я работал над несколькими пользовательскими элементами управления ASP.NET, которые будут интегрированы в экземпляр Sitecore CMS. Разработка была завершена с использованием нескольких фиктивных страниц aspx для размещения элементов управления, и все отлично работает локально и при развертывании проекта на тестовом сервере.

Однако, когда мы интегрируем модули в Sitecore, некоторые действия вызывают исключение «Invalid Viewstate» - «Недопустимый символ в строке base64». Я скопировал это локально, то есть в моей системе разработки, настроив IIS для просмотра проекта Sitecore, и это заставляет меня поверить, что это не проблема с сервером, но, очевидно, я не уверен в этом.

Используя fiddler, я вижу, что запрос POST содержит не одно, а два поля __VIEWSTATE, в действительности, __EVENTVALIDATION, __EVENTTARGET и __EVENTARGUMENT имеют два экземпляра в каждом из запросов. Значения __VIEWSTATE идентичны, и я могу декодировать содержимое (поэтому я предполагаю, что сбой связан с наличием двух значений, а не с ошибкой ни в одном из них). Два значения __EVENTVALIDATION различны, но оба действительны (т. Е. Они декодируют), а остальные поля __EVENT пусты.

Если я удаляю UpdatePanels из элемента управления, то все работает «ОК» - очевидно, что теперь нет частичных обновлений страницы AJAX, хотя это не идеально. Если я отключаю Jscript в своем браузере с помощью UpdatePanels обратно в коде, то снова все в порядке.

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

[Обновление 14-02-2012] Я бродил по сети, но на самом деле не нашел никого с такой же проблемой. Я думал, что ударил золото этим постом , но опять-таки это не имело значения для моей проблемы. Все указывает на то, что AJAX на Sitecore должен работать нормально, но я предполагаю, что у нас должна быть проблема с конфигурацией. Проблема в том, что я не являюсь разработчиком Sitecore, и в настоящее время у меня нет доступа к одному (ежегодный отпуск!)

1 Ответ

1 голос
/ 16 мая 2012

Два __VIEWSTATE поля звучат очень похоже на то, что у вас есть два form элемента на странице, возможно, в результате некоторых взаимодействий jQuery или AJAX.

Этот пост звучит похоже: «Недопустимый символ в строке Base-64» с использованием ASP.NET и C #

Используете ли вы ASP.NET AJAX? Я бы точно рассмотрел, что делает JavaScript с DOM - он, вероятно, вставляет дополнительный элемент form.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...