Многократно обнаружил в логе ошибок следующее сообщение:
Padding is invalid and cannot be removed. at System.Security.Cryptography.RijndaelManagedTransform.DecryptData...
Размышляя о том, что бы это могло значить и зачем на сайте, где не используется https, может понадобиться шифрование, я отправился на поиски в google.
Истина, как обычно, была достаточно простой. Механизм ViewState использует шифрование. Использование network load balancer не гарантирует, что пользователь каждый раз будет попадать на один и тот же web-сервер. Поэтому для дешифрования ViewState может использоваться не тот ключ, что и вызовет приведенное в самом начале исключение.
Решается проблема достаточно просто, для этого нам и понадобится машинный ключ.
В Web.config в секции system.web надо добавить секцию machineKey. Тогда для шифрования на всех серверах в web-ферме будет использоваться один и тот же ключ.
Генератор ключей можно найти здесь. Более подробно можно почитать вот здесь (секция Web Farm Deployment Considerations).
среда, 27 июня 2007 г.
Подписаться на:
Сообщения (Atom)