2008-11-14 4 views
23

Мой веб-сайт дал мне прерывистые ошибки при попытке выполнить любой Ajax деятельности. Сообщение, которое я получаю, этоОшибка ASP.NET Ajax: Sys.WebForms.PageRequestManagerParserErrorException

Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. 

Details: Error parsing near ' 

<!DOCTYPE html P'. 

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

+0

@Phil - Я заметил, что вы отметили ответ splattne правильно, но вы сказали в комментарии ниже, что никто из них не применялся. У меня такая же проблема, и ни одна из «причин» не распространяется на меня. Каково было решение, которое вы нашли? – AdamBT 2009-08-31 19:34:10

+3

@AdamBT - жаль, что меня уволили с этой работы еще в феврале, и я не могу вспомнить, что мы сделали. К сожалению, я пропустил ваш комментарий так долго. – 2009-09-18 12:58:06

+0

http://niharstechnicalfunda.blogspot.in/2012/03/syswebformspagerequestmanagerparsererro.html – Niks 2012-08-31 11:58:03

ответ

22

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

Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it

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

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

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

только на. этап рендеринга делает все по-другому. pture рендеринг только тех пакетов UpdatePanels, которые нам интересны, и отправить их клиенту с использованием специального формата. Кроме того, мы отправляем некоторые другие фрагменты информации, такие как заголовок страницы, скрытых значений формы, в URL формы действий, а также списки сценариев «

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

  1. Звонки Response.Write():
  2. фильтры отклика
  3. HttpModules
  4. трассировки Сервер включен
  5. Cal Ls в Server.Transfer()
+0

Я прочитал статью - никто из них не применим. Ошибка на самом деле может быть панелью обновления на главной странице. Благодаря! – 2008-11-14 14:29:36

+0

Пользователь нашего программного обеспечения видит очень похожую ошибку. Мне интересно, удалось ли найти решение этой проблемы? – 2009-02-09 06:09:42

+0

Я добавил бы комментарий к этому вопросу. Поэтому пользователю будет предложено в следующий раз, когда он войдет в систему. – splattne 2009-02-09 07:32:42

1

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

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

1

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

if (Session.SessionID == "") 
{ 
    Page.Session.Add("SessionID", Session.SessionID); 
} 
1

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

SOLUTION:

  1. Добавить кнопку «GOTO» на странице ASPX, где панель обновления с помощью и добавить его внешнюю панель Update

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

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

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

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

9

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

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

     </ContentTemplate> 
    </asp:updatepanel> 
1

Я решил эту же проблему путем удаления ошибочно вложенной UpdatePanels.

4

У меня было это случилось со мной, и ни одна из причин в списке в ответе применяется. Я не нашел корень проблемы, пока я полностью отключил AJAX. Обнаружили, что код сохранял объект в ViewState, который содержал неэриализуемый объект. Я сделал объект сериализуемым, и он снова начал работать.

1

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

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

1

Изменение пула приложений из встроенных в ASP.NET классике решить эту проблему для меня.

0

У меня также была эта ошибка. Решение, сообщенное пользователем «user1097991», некоторое время разрешило его (я использовал несериализованные объекты в viewstate)

Но позже ошибка снова вернулась, теперь случайным образом. После некоторого поиска я получил ответ: viewstate стал слишком большим и был усечен. Я отключил некоторые виды представлений о сетках и меню, и проблема не была показана снова.

0

я обнаружил, что мой вопрос был связан с нулевым символом, оказываемые в привязках данных в виде GridView. Ожидаемая длина ответа не соответствовала фактической длине текста ответа, что приводило к ошибке. Как только я исправил данные в базе данных, я больше не получил ошибку. Конечным решением будет дезинфекция текста, получаемого во время события RowDataBound.

Просматривая базу данных, я не мог видеть плохие данные, так как SQL Server 2008 не показывает текст, если нулевой символ (Char (0)) в строке. В событии RowDataBound моего GridView я добавил код, чтобы создать исключение для любого текста, в котором были специальные символы. Вот как я нашел запись, содержащую нулевые символы.

tl; dr - Проверьте наличие символов nul в отображаемом html.

0

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

0

У меня была такая же ошибка.

Для меня это было

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

Отсутствует в разделе HttpModules из web.config (.NET 3.5 приложения)

Эта ошибка, кажется, может быть связано со многими различными вещами.

1

В нашем случае проблема была вызвана переписывающим прокси-сервером в пути. Переписывание изменило содержание ответа панели обновления. Но этот ответ также содержит оригинальный размер. Механизм перезаписи не может знать, что несколько байтов ответа действительно содержат оригинальный размер ответа, и его также следует изменить.

Обновление ответ панель начинается так:

1|#||4|30502|updatePanel|pnlUpdate| ... 

30502 оригинальна размер контента, который в настоящее время обновляется. Механизм перезаписи изменяет выход, но размер остается неизменным => исключение ошибки парсера.

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

Смежные вопросы