Зашифровано ли мое VIEWSTATE? - PullRequest
8 голосов
/ 14 июня 2011

Я немного растерялся. Я явно не установил Web.config <pages ViewStateEncryptionMode="Always" />, и поэтому эта страница MSDN говорит, что по умолчанию она должна Auto. На этой странице MSDN сказано, что Auto должен вызывать шифрование информации о состоянии просмотра, если элемент управления запрашивает шифрование путем вызова метода RegisterRequiresViewStateEncryption. Но ни один из моих элементов управления не вызывает этот метод. Похоже, что мое представление не должно быть зашифровано.

Однако, когда я копирую / вставляю состояние представления в один из различных онлайн viewstate декодеров , мне говорят, что сериализованные данные представления состояния недействительны , Итак, мое представление состояния зашифровано или нет? Есть какой-то очевидный способ сказать? Изменилось ли поведение ASP.net по умолчанию для кодирования состояния представления по умолчанию, если вы не отключили его?

Ответы [ 3 ]

3 голосов
/ 14 июня 2011

Если установлено значение Всегда или авто, все состояния управления будут зашифрованы. Все элементы управления, вызывающие RegisterRequiresViewStateEncryption состояние просмотра, будут зашифрованы независимо от значения Авто / Всегда. Если ваш «пользовательский элемент управления» нуждается в шифровании, позвоните по этому адресу.

См. Это на MSDN

Если вы разрабатываете пользовательский элемент управления, который имеет дело с потенциально конфиденциальной информацией, вызовите метод RegisterRequiresViewStateEncryption, чтобы зарегистрировать элемент управления на странице и убедиться, что состояние представления для элемента управления зашифровано.

Состояние всей страницы будет зашифрованы, если ViewStateEncryptionMode имеет значение Auto или всегда.

2 голосов
/ 14 июня 2011

Включите его, посмотрите, не получите ли вы ту же ошибку от декодера.

Выключите его, посмотрите, декодирует ли он сейчас.

Я думаю, что это даст вам ответ, который вы ищете.

0 голосов
/ 14 июня 2011

Настройки по умолчанию можно найти на вашем machine.config, который является общей суперконфигурацией для всех ваших веб-приложений. с вашим web.config вы можете перезаписать его. Вы можете открыть один из своих сайтов и заглянуть внутрь.

Здесь вы можете найти machine.config:

%WinDir%\Microsoft.NET\Framework\<FrameworkVersion>\CONFIG
...