Eilon Lipton предлагает отличную запись в блоге. Он содержит множество советов о том, как избежать этой ошибки:
Sys.WebForms.PageRequestManagerParserErrorException - что это такое и как этого избежать
Читайте комментарии тоже. Есть комментарий кого-то с такой же проблемой: « Я решил это, изменив время простоя сервера моего пула приложений на IIS . Это было только 5, поэтому я увеличил его и теперь работает».
«Элемент управления UpdatePanel использует асинхронные обратные передачи для управления тем, какие части страницы будут отображаться. Он делает это, используя целую кучу JavaScript на клиенте и целую кучу C # на сервере.
Асинхронные обратные передачи точно такие же, как и обычные обратные передачи, за исключением одной важной вещи: рендеринга. Асинхронные обратные передачи проходят через те же события жизненных циклов, что и обычные страницы (это вопрос, который мне часто задают).
Только на этапе рендеринга все становится иначе. Мы фиксируем рендеринг только тех UpdatePanels, которые нам нужны, и отправляем их клиенту в специальном формате. Кроме того, мы отправляем некоторые другие сведения, такие как заголовок страницы, скрытые значения формы, URL-адрес действия формы и списки сценариев. " [1 115]
Наиболее распространенные причины этой ошибки:
Также имейте в виду, что это может быть вызвано неправильным кодированием html того, что вы можете отображать на странице с помощью частичной обратной передачи.
Я наконец решил свой вариант этой же проблемы. Я пытался скопировать / переместить выбранное значение между двумя списками в веб-форме. В моем случае мне пришлось специально вызывать {listbox} .ClearSelection () перед выполнением действия во второй раз.
Таким образом, очевидно, что эта проблема / сообщение об ошибке может появиться по множеству причин.
Проблема: Sys.WebForms.PageRequestManagerParserErrorException возникнет при перенаправлении вашей страницы, скажем, нажатие кнопки внутри UpdatePanel в aspxAjax.
РЕШЕНИЕ:
Добавьте кнопку «GoTo» на страницу aspx, где используется панель обновления, и добавьте ее за пределами панели обновления
В вашем коде назначьте только что зарегистрированный userID переменной сеанса, скажем Session["UseridJustregistered"]=Id
из DB или UsernameField
Respose.Redirect("regSucces.aspx?urlid='" + Session["UseridJustregistered"] + "'");
Проверьте, если Session["UseridJustregistered"]
является нулевым или нет
Это старый классический способ ASP, который может решить нашу проблему, к тому времени, когда Microsoft найдет решение, мы сможем решить его таким образом.
Я решил эту же проблему, удалив Content-Type:
из секции Custom HTTP Headers
на вкладке HTTP Headers
в IIS
. Это нарушало кодировку страницы и как-то влияло на Ajax в целом.
Content-Type
, который я настроил в IIS
, устанавливал кодировку на ISO-8859-1
.
Вероятно, произошла ошибка при отправке сообщения назад. В этом случае вы можете просмотреть подробную информацию об ошибке, добавив PostBackTrigger в панель обновлений и нажав кнопку, которая вызывает проблему:
<asp:updatepanel ID="updatepanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="button1" />
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:updatepanel>
Это может показаться немного хакерским, но это решило проблему для меня. У меня не было ни одной из распространенных причин ошибки, поэтому я просто вставил этот лейкопластырь при загрузке страницы:
if (Session.SessionID == "")
{
Page.Session.Add("SessionID", Session.SessionID);
}