поле представления полностью отсутствует в сафари - PullRequest
0 голосов
/ 09 декабря 2010

Это происходит в нескольких версиях Safari, в том числе 5.x

Он будет публиковать _ EVENTTARGET = & _EVENTARGUMENT =, но ничего для __VIEWSTATE =

Этопроисходит только в Safari и только на одной странице нашего сайта.

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

Состояние просмотра на этой странице не слишком велико.

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Мы столкнулись с множеством проблем состояния просмотра в версии 3. Safari устанавливает ограничения на объем данных, которые могут отображаться в любом поле, которое отправляется обратно на сервер.проблема заключалась в том, чтобы настроить viewstate на несколько элементов управления вводом.

Вы можете сделать это в разделе system.web / pages web.config.Например:

<system.web>
  <pages maxPageSTateFieldLength="500" />
</system.web>

Возможно, вам придется поиграть со значением.Я не могу вспомнить, какие ограничения существуют для разных версий сафари.Несколько человек сказали, что 1k, но если я правильно помню из нашего тестирования, некоторые версии проходили только около 500 байтов.

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

0 голосов
/ 10 декабря 2010

(с тактом, отличным от предыдущего ответа)

Подводя итог тому, что мы знаем до сих пор:

  1. только сафари
  2. только определенная страница
  3. в миксе есть устройство под названием StrangeLoop, которое удаляет viewstate при выходе и помещает его обратно, когда страница отправляется обратно. Это происходит через некоторый тип значения токена.

Пара вопросов: Во-первых, это ограничено только конкретным клиентом или группой людей? Я спрашиваю, потому что может быть важно, что это «только» сафари.

Во-вторых, имеет ли устройство StrangeLoop значение тайм-аута какого-либо типа или ограничение трафика, когда его кэш-память токена собирает мусор?

Я могу представить сценарий, когда конкретный клиент заходит на эту страницу и сидит некоторое время (10 минут ... дольше?). В то же время, либо значение тайм-аута встречается, либо объем трафика, который у вас есть, вынуждает устройство странного цикла выдавать состояние просмотра для этого конкретного клиента. Затем, когда они продолжат и отправят обратно, у устройства не будет состояния просмотра, которое можно было бы вставить обратно в поток html.

Мне кажется, что для того, чтобы у вас вообще не было состояния просмотра, само устройство не должно вводить его. Единственная причина, по которой я могу придумать это, заключается в том, что значение токена не было отправлено safari (маловероятно, поскольку оно должно быть достаточно маленьким), или устройство не может найти совпадение в своей кеш-таблице.

Есть ли на устройстве какие-либо журналы или метрики, в которых можно увидеть, не соответствует ли оно значению входящего токена?

Похожая идея, если на этой странице есть какой-то Ajax. Отсылает ли устройство разный токен назад для каждого запроса, или один браузер клиента сохраняет токен для всего сеанса просмотра? Если он отправляет другой токен ... тогда, возможно, safari неправильно обновляет свою клиентскую сторону новым значением токена. Хотя этот путь должен быть довольно легко дублировать.

...