У меня есть веб-ферма с двумя узлами для тестирования (репликация моей производственной среды). Теперь, после того как я установил VS2010 на один из узлов (один из узлов выполняет функции сервера сборки), может показаться, что ключи компьютера рассинхронизировались.
Если я обращаюсь к своему приложению на каждом узле, все работает нормально (с localhost и снимая другой узел с фермы), но когда у меня есть оба узла в массиве, я получаю ошибки http (500, 404 и 401) на нескольких из ресурсы страницы (я подозреваю, что те, которые перенаправляются на сервер, который не создал cookie аутентификации), и я также получаю кучу исключений «Длина данных для дешифрования недопустима». Это наводит меня на мысль, что cookie аутентификации, сгенерированный сервером, несовместим с другим сервером, и, таким образом, ключи машины на двух узлах разные, но я не могу понять, где !.
Дополнительная информация:
MachineKeys указаны в моих приложениях web.config и одинаковы для обоих, и оба имеют алгоритм SHA1
Оба приложения работают на платформе .net 2.0 (приложения asp.net 3.5) с одинаковой конфигурацией в пуле.
На обоих серверах запущен сервер w2k3 со всеми установленными обновлениями, за исключением того, что на одном из серверов установлены .net4.0 и VS2010, а на другом нет.
Ни на одном из серверов нет ключа машины, указанного в глобальном файле machine.config, поэтому они должны использовать ключи web.config, верно?
Есть идеи, где искать дальше?
ОТВЕТ
Я наконец-то понял. Как оказалось, на одном из узлов не было должным образом установлено критическое обновление (KB2416470) через обновление Windows. И как упоминается в сообщении Скотта Гу Вот
Важно отметить, что если ваш сайт или приложение работает на нескольких веб-серверах в веб-ферме, вы должны убедиться, что обновление применяется ко всем машинам (а не только к некоторым из них). Это связано с тем, что обновление изменяет поведение шифрования / подписи определенных функций в ASP.NET, и сочетание исправленных и непатченных серверов приведет к несовместимости этого поведения шифрования / подписи между ними.
Установка обновления вручную решила проблему.
Надеюсь, это сэкономит время кому-то еще.