Обратная передача ASP.NET Ajax внезапно останавливается на IPhone/IPad

У меня есть веб-сайт/интерфейс управления Asp.Net 4.0, в котором используется панель обновления и несколько кнопок. Панель обновления подключена к таймеру, который срабатывает каждые 5 секунд, вызывая частичную обратную передачу. Кнопки переключают некоторые настройки, а затем принудительно обновляют панель обновлений с помощью вызова, подобного этому:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('<%= UpdatePanel.ClientID %>', '');
return true;

Сайт работает нормально в IE/Firefox и на мобильных устройствах Safari (iPhone/IPad), но на мобильных устройствах обратная передача происходит случайным образом. и молча прекращает работу. Я полагаю, что это можетбыть связано с экономией заряда батареи и тем, что сафари отключает частичную обратную передачу при простое. Проблема в том, что когда пользователь возвращается на сайт, постбэк полностью отключается и ни таймер, ни кнопки больше не вызывают никаких постбеков. (Я отслеживал сетевой трафик на сервере, чтобы убедиться в этом). Даже когда пользователь обновляет веб-сайт (несколько раз), частичная обратная передача не возвращается в игру. Он просто перестает отправлять данные на сервер. Потом вдруг и ни с того ни с сего постбек снова начинает работать. Время простоя часто составляет до 10 минут, что полностью делает мой сайт бесполезным для своей цели.

Учитывая, что обратная передача снова начинается так долго, интересно, есть ли какие-либо настройки на стороне клиента или в IIS, с которыми можно поиграться?

Веб-сайт будет работать только на устройствах моих клиентов, он не является общедоступным, поэтому, если на клиенте есть какие-либо настройки, я согласен.

Я действительно запутался в этом и не нашел способа вызвать "ошибку", это просто иногда случается. Любые советы и подсказки очень ценятся.


Обновление:

Добавлена ​​обработка ошибок, и я (не всегда) получаю следующее сообщение при сбое обратной передачи:

Страница выполняет асинхронную обратную передачу, но для свойства ScriptManager.SupportParialRendering установлено значение false. Убедитесь, что свойство имеет значение true во время обратной передачи.

Как ни странно, это свойство, очевидно, справедливо для устройства в первую очередь, иначе обратная передача никогда бы не сработала, а это не так.


Обновление 2: Нашел следующее сообщение в блоге, предлагающее изменить параметр browserCap в web.config. Пробую это сейчас. Доложит. Другие предложения по-прежнему приветствуются. ASP.NET 4 BrowserCaps (или: о чем они думали?)

Вышеприведенное отключает javascript в Safari Mobile в полноэкранном режиме (запуск с домашнего экрана). В следующей статье предлагается решение этой проблемы. Попался: iPad против ASP.NET

7
задан Avada Kedavra 9 May 2012 в 10:25
поделиться

0 ответов

Другие вопросы по тегам:

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