Sys.WebForms.PageRequestManagerServerErrorException 12031. Из идей - PullRequest
2 голосов
/ 28 февраля 2011

В недавнем проекте мы в настоящее время получаем 12031 ошибок.вот полная ошибка:

Sys.WebForms.PageRequestManagerServerErrorException 12031 код состояния, возвращаемый с сервера, был 12031

Проблема в том, что это не происходит всевремя и мы не можем воспроизвести ошибку в среде разработки.

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

Я нашел сообщение на SO с такой же проблемой и попытался изменить maxRequestLength на "1 ", чтобы увидеть, получаю ли я постоянно одну и ту же ошибку, но не получаю.Вместо этого я получаю

Maximum request length exceeded. 

Так что я начинаю думать, что это не связано с maxRequestLength.У меня на самом деле нет идей.У меня есть ScriptManager в моем MasterPage и его AsyncPostBackTimeout="240".Это то же самое время (дать или взять).Я получаю ошибку 12031 после 3,5 минут "ничего".Я регистрирую одну из страниц, и под регистрацией я имею в виду регистрацию каждого раздела страницы, например, «Page_Load называется», «xyz называется» и т. Д., И у меня для этого есть около 15 мест на странице.После того, как пользователь нажимает кнопку и ScriptManager пытается выполнить свою работу, обратной передачи не происходит, регистрация не происходит.Это похоже на то, что страница хочет сделать обратную передачу, но слишком старая, чтобы сделать это.Пытается выполнить это в течение примерно 3,5 минут и завершается с ошибкой.

Пожалуйста, если у вас есть идеи, ПОМОГИТЕ МНЕ.

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 марта 2011

Эта ошибка почти наверняка не имеет ничего общего с размером ответа, AsyncPostBackTimeout или maxRequestLength.

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

  1. Проверять журнал событий Windows в течение времени, когда было известно, что киоски получили ошибку.Поищите все соответствующие ошибки или предупреждения.
  2. Если возможно, попросите сотрудников киоска использовать что-то вроде Pingtest , чтобы проверить качество соединения с локальной сетью во время получения ошибки вваше приложение.
  3. Используйте службу, подобную Pingdom , чтобы убедиться, что сам сервер не теряет периодически соединение.
0 голосов
/ 10 марта 2011

Я получил эту ошибку раньше, когда у нас Устройство Барракуда сидело перед нашим веб-сайтом. Это была проблема максимальной длины запроса, потому что Barracuda защищает от перегрузки размера запроса. Мы временно удалили устройство, и это решило проблему. Не уверен, что это твоя проблема.

0 голосов
/ 28 февраля 2011

Эта ошибка может быть связана с ограничением времени выполнения HTTP maxRequestLength. Значение по умолчанию - 4096.

 Try adding (or editing) the following entry in your Web.Config: 
"<httpRuntime maxRequestLength="8192"  />" (effectively allowing 8mb of data transmission, instead of the default 4mb). 

Пожалуйста, не .... Вы можете установить данные согласно вашему максимальному запросу. 8192 не предел. Также вам нужно добавить Page.Form.Attributes.Add ("enctype", "multipart / form-data"); в событии Page_Load страницы.

Вы можете ввести это в разделе конфигурации System.Web.

Как не получить исключение PageRequestManagerParserErrorException?

Для начала не делайте ничего из предыдущего списка! Вот соответствующий список того, как избежать данной ошибки (когда это возможно): Вызовы Response.Write (): Разместите аналогичный элемент управления на своей странице и установите его свойство Text. Дополнительным преимуществом является то, что ваши страницы будут действительными HTML. При использовании Response.Write () вы обычно получаете страницы с недопустимой разметкой.

Фильтры ответов: Исправление может быть просто не использовать фильтр. Они не используются очень часто в любом случае. Если возможно, фильтруйте вещи на уровне управления, а не на уровне ответа.

HttpModules: такие же, как фильтры ответов.

Включена трассировка сервера: Используйте другую форму трассировки, такую ​​как запись в файл журнала, журнал событий Windows или пользовательский механизм. Вызовы Server.Transfer (): Я не совсем уверен, почему люди используют Server.Transfer () вообще. Возможно, это наследие от Classic ASP. Я бы предложил использовать Response.Redirect () с параметрами строки запроса или публикацией на нескольких страницах.

Еще один способ избежать ошибки синтаксического анализа - сделать обычную обратную передачу вместо асинхронной обратной передачи. Например, если у вас есть кнопка, которая обязательно должна выполнять Server.Transfer (), сделайте так, чтобы она выполняла обычные обратные вызовы. Есть несколько способов сделать это: Самый простой - просто поместить кнопку за пределы любой панели обновления. К сожалению, макет вашей страницы может не допустить этого. Добавьте PostBackTrigger к вашей UpdatePanel, который указывает на кнопку. Это прекрасно работает, если кнопка объявлена ​​статически через разметку на странице. Вызовите ScriptManager.RegisterPostBackControl () и передайте соответствующую кнопку. Это лучшее решение для элементов управления, которые добавляются динамически, например, внутри повторяющегося шаблона.

Удачи!

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