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





Я провел небольшое исследование по этому поводу, и хотя я не совсем уверен, что это причина, я считаю, что это потому, что Safari не возвращает полный набор результатов (следовательно, обрезает его).
Я разговаривал с другим разработчиком и нашел следующий пост на Channel 9, в котором рекомендуется использовать службу состояния SQL для хранения состояния просмотра, избегая проблемы обратной передачи, а также размера страницы.
Кажется, это лучшее решение?
Моим первым портом захода было бы просмотреть элементы на странице и посмотреть, какие элементы управления:
Если это не удается, и вот отказ от ответственности - я никогда не использовал это решение на веб-сайтах, но в прошлом, когда я хотел исключить массивные ViewState в приложениях с ограниченной аудиторией, я сохранял ViewState в сеансе.
У меня это сработало, потому что количество обращений к памяти не имеет значения для количества пользователей, но если вы используете довольно популярный сайт, я бы не рекомендовал этот подход. Однако, если решение Session работает для Safari, вы всегда можете обнаружить пользовательский агент и выполнить подделку соответствующим образом.
Пока я являюсь вторым по счету решением Channel 9, также имейте в виду, что в некоторых размещенных средах Safari не считается браузером верхнего уровня. Возможно, вам потребуется добавить его в браузерную оболочку вашего приложения, чтобы использовать некоторые функции ASP.Net.
Это было основной причиной некоторых головных болей, которые у нас были для сайта клиента, который использовал элемент управления ASP Menu.