Я нашел решение!
После борьбы с ответом, который дал мне @Tgr, я наткнулся на потрясающий JS lib: wtf_wikipedia . Я надеюсь, что Вики решит дать этому человеку медаль! Взять, к примеру, текст 8-й категории так же просто:
doc.sections(8).text()
Наиболее вероятная причина этой ошибки состоит в том, когда обратная передача будет остановлена перед всеми загрузками состояния отображения (пользователь поражает кнопки остановки или кнопки "Назад"), состояние отображения не проверит и бросит ошибку.
Другие потенциальные причины:
Обновление: статья Microsoft о проблеме. В дополнение к вышеупомянутому они предлагают две других потенциальных причины:
В.NET 3,5 SP1 свойство RenderAllHiddenFieldsAtTopOfForm было добавлено к конфигурации PagesSection.
Web.config
<configuration>
<system.web>
<pages renderAllHiddenFieldsAtTopOfForm="true"></pages>
</system.web>
</configuration>
Интересно, значение по умолчанию этого верно. Так, в сущности при использовании.NET 3,5 SP1 затем, ViewState автоматически представляется наверху формы (прежде чем остальная часть страницы будет загружена), таким образом устранение ошибки ViewState, которую Вы получаете.
"обратная передача останавливается перед всеми загрузками состояния отображения"
У меня была эта точная проблема прежде, и это было причиной.
Первоначально мы отключили свойство ViewStateMac (enableViewStateMac="false"
в page
директива) для решения его но это не истинное решение проблемы и может угрожать целостности данных. Мы в конечном счете разрешили его отключенным наша кнопка отправки, пока страница полностью не загрузилась, и обрезка размера нашего состояния отображения путем отключения его на некоторых средствах управления.
Я испытал проблему с определенными определенными версиями Safari 3. Мое решение состояло в том, чтобы переместиться, ViewState к вершине формы (расширил класс Page и перезаписал Метод рендеринга для pre-3.5 SP1 или.Net 3.5 SP1 и позже делает это по умолчанию), и разделять ViewState к нескольким различным полям вместо одного файла монстра. Посмотрите, что ViewState Разделяет на блоки в ASP.NET 2.0 (maxPageStateFieldLength)
Я получил эту ошибку, когда у меня была установка тега form на моей странице без атрибута действия, и затем в коде - позади, я изменил атрибут действия формы на "Action.aspx".
И в JavaScript, я отправил форму (theForm.submit () ;)
Я думаю в своем случае, это была проблема безопасности, и что Вы не можете изменить это после того, как это было уже установлено на странице...?
Я нашел корень этой проблемы на своем сайте и наконец-то смог решить ее. Это не прямой ответ на ваш вопрос, но я хотел поделиться этой небольшой информацией.
В прошлом я пробовал все (включая решение, предложенное Jeffaxe, выше), но безрезультатно, и я не хотел устанавливать enableViewStateMac="false"
(как Raelshark упоминает выше) на моей странице, потому что это просто скрывает проблему.
Что вызвало проблему в моем случае? Проблема была вызвана использованием модуля Intelligencia.UrlRewriter (версия 2.0 RC 1 build 6) на некоторых страницах моего сайта. Я использовал некоторые SEO-дружественные ссылки, и это вызывало сбой проверки ViewState. Когда я использовал "нормальные" ссылки (вместо SEO-дружественных), проблема исчезла!
Я воспроизвел проблему несколько раз, чтобы убедиться, что это не ложная тревога (я использую ASP.NET 3.5).
Я знаю, что некоторые из вас могут не использовать вышеуказанный модуль и все равно получать эту ошибку, что подразумевает, что причина в чем-то другом. По крайней мере, обмен этим опытом может быть полезен для некоторых.