ViewState недопустимый только в Safari

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

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

3 ответа

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

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

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

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

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

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

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

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

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

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