Вопрос

Один из сайтов, которые я обслуживаю, в значительной степени зависит от использования ViewState (это не мой код).Однако на некоторых страницах, где ViewState слишком раздут, Safari бросает "Validation of viewstate MAC failed" ошибка.

Похоже, это происходит только в Safari.Firefox, IE и Opera успешно загружаются по одному и тому же сценарию.

Это было полезно?

Решение 3

Я провел небольшое исследование по этому поводу, и хотя я не совсем уверен, что это причина, я считаю, что это связано с тем, что Safari не возвращает полный набор результатов (следовательно, обрезает его).

Я обсуждал с другим разработчиком и также нашел следующий пост на Channel 9, в котором рекомендуется использовать службу состояния SQL для хранения состояния просмотра, избегая проблем с обратной передачей, а также размера страницы.

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

Кажется, это лучшее решение?

Другие советы

Хотя я поддерживаю решение Channel 9, также имейте в виду, что в некоторых хостинговых средах Safari не считается браузером более высокого уровня.Возможно, вам придется добавить его в окно просмотра вашего приложения, чтобы использовать некоторые функции ASP.Net.

Это было основной причиной некоторых головных болей, с которыми мы столкнулись при работе с сайтом клиента, который использовал элемент управления ASP Menu.

Моей первой задачей было бы просмотреть элементы на странице и посмотреть, какие элементы управления:

  1. Будет работать, когда я выключу ViewState
  2. Может быть перемещен со страницы в вызов AJAX для загрузки при необходимости.

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

У меня это сработало, поскольку воздействие на память не имеет существенного значения для количества пользователей, но если у вас довольно популярный сайт, я бы не рекомендовал этот подход.Однако, если решение Session работает для Safari, вы всегда можете обнаружить пользовательский агент и соответствующим образом сфальсифицировать его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top