Ошибка Ajax ASP.NET: Sys. WebForms. PageRequestManagerParserErrorException

23
задан abatishchev 21 December 2011 в 14:17
поделиться

7 ответов

Eilon Lipton предлагает отличную запись в блоге. Он содержит множество советов о том, как избежать этой ошибки:

Sys.WebForms.PageRequestManagerParserErrorException - что это такое и как этого избежать

Читайте комментарии тоже. Есть комментарий кого-то с такой же проблемой: « Я решил это, изменив время простоя сервера моего пула приложений на IIS . Это было только 5, поэтому я увеличил его и теперь работает».

«Элемент управления UpdatePanel использует асинхронные обратные передачи для управления тем, какие части страницы будут отображаться. Он делает это, используя целую кучу JavaScript на клиенте и целую кучу C # на сервере.

Асинхронные обратные передачи точно такие же, как и обычные обратные передачи, за исключением одной важной вещи: рендеринга. Асинхронные обратные передачи проходят через те же события жизненных циклов, что и обычные страницы (это вопрос, который мне часто задают).

Только на этапе рендеринга все становится иначе. Мы фиксируем рендеринг только тех UpdatePanels, которые нам нужны, и отправляем их клиенту в специальном формате. Кроме того, мы отправляем некоторые другие сведения, такие как заголовок страницы, скрытые значения формы, URL-адрес действия формы и списки сценариев. " [1 115]

Наиболее распространенные причины этой ошибки:

  1. Вызовы Response.Write ():
  2. Фильтры ответов
  3. HttpModules
  4. Трассировка сервера включена
  5. Вызовы на сервер.Трансфер ()
22
ответ дан Abel 29 November 2019 в 01:58
поделиться

Также имейте в виду, что это может быть вызвано неправильным кодированием html того, что вы можете отображать на странице с помощью частичной обратной передачи.

0
ответ дан John 29 November 2019 в 01:58
поделиться

Я наконец решил свой вариант этой же проблемы. Я пытался скопировать / переместить выбранное значение между двумя списками в веб-форме. В моем случае мне пришлось специально вызывать {listbox} .ClearSelection () перед выполнением действия во второй раз.

Таким образом, очевидно, что эта проблема / сообщение об ошибке может появиться по множеству причин.

1
ответ дан Chuck 29 November 2019 в 01:58
поделиться

Проблема: Sys.WebForms.PageRequestManagerParserErrorException возникнет при перенаправлении вашей страницы, скажем, нажатие кнопки внутри UpdatePanel в aspxAjax.

РЕШЕНИЕ:

  1. Добавьте кнопку «GoTo» на страницу aspx, где используется панель обновления, и добавьте ее за пределами панели обновления

  2. В вашем коде назначьте только что зарегистрированный userID переменной сеанса, скажем Session["UseridJustregistered"]=Id из DB или UsernameField

  3. Respose.Redirect("regSucces.aspx?urlid='" + Session["UseridJustregistered"] + "'");

  4. Проверьте, если Session["UseridJustregistered"] является нулевым или нет

Это старый классический способ ASP, который может решить нашу проблему, к тому времени, когда Microsoft найдет решение, мы сможем решить его таким образом.

1
ответ дан abatishchev 29 November 2019 в 01:58
поделиться

Я решил эту же проблему, удалив Content-Type: из секции Custom HTTP Headers на вкладке HTTP Headers в IIS. Это нарушало кодировку страницы и как-то влияло на Ajax в целом.

Content-Type, который я настроил в IIS, устанавливал кодировку на ISO-8859-1.

1
ответ дан BrunoSalvino 29 November 2019 в 01:58
поделиться

Вероятно, произошла ошибка при отправке сообщения назад. В этом случае вы можете просмотреть подробную информацию об ошибке, добавив PostBackTrigger в панель обновлений и нажав кнопку, которая вызывает проблему:

    <asp:updatepanel ID="updatepanel1" runat="server">
        <Triggers>
            <asp:PostBackTrigger ControlID="button1" /> 
        </Triggers>
        <ContentTemplate>

        </ContentTemplate>
    </asp:updatepanel>
9
ответ дан CSharper 29 November 2019 в 01:58
поделиться

Это может показаться немного хакерским, но это решило проблему для меня. У меня не было ни одной из распространенных причин ошибки, поэтому я просто вставил этот лейкопластырь при загрузке страницы:

if (Session.SessionID == "")
{
    Page.Session.Add("SessionID", Session.SessionID);
}
1
ответ дан 29 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: