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