Один из сайтов, которые я поддерживаю, сильно зависит от использования ViewState
(это не мой код). Тем не менее, на некоторых страницах с ViewState
избыточным расширением Safari выдает "Validation of viewstate MAC failed"
ошибку.
Похоже, это происходит только в Safari. Firefox, IE и Opera успешно загружаются в одном сценарии.
Хотя я поддерживаю решение Channel 9, помните, что в некоторых хостинговых средах Safari не считается браузером верхнего уровня. Возможно, вам придется добавить его в browscap вашего приложения, чтобы использовать некоторые функции ASP.Net.
Это было основной причиной некоторых головных болей, которые мы испытывали для сайта клиента, который использовал элемент управления ASP Menu.
Моим первым портом захода было бы просмотреть элементы на странице и посмотреть, какие элементы управления:
- Будет работать, когда я выключу ViewState
- Может быть перемещен со страницы в вызов AJAX и загружен при необходимости
В противном случае, и вот отказ от ответственности - я никогда не использовал это решение на веб-сайте - но в прошлом, когда я хотел исключить массивные ViewStates в приложениях с ограниченной аудиторией, я сохранял ViewState в Session.
Это сработало для меня, потому что попадание в память не является значительным для числа пользователей, но если вы используете довольно популярный сайт, я бы не рекомендовал такой подход. Тем не менее, если решение Session работает для Safari, вы всегда можете обнаружить пользовательский агент и подобрать подходящее решение.
Я провел небольшое исследование в этой области, и хотя я не совсем уверен, что причина в том, что я считаю, что Safari не возвращает полный набор результатов (следовательно, обрезает его).
Я был в разногласиях с другим разработчиком и нашел следующий пост на канале 9, который также рекомендует использовать службу состояния SQL для хранения состояния просмотра, избегая проблемы обратной передачи, а также размера страницы.
Кажется ли это лучшим решением?