Ключ машины изменяется при повторном использовании пула приложений
Я использую API MachineKey для шифрования/дешифрования части информации в приложении ASP.NET. Я использую
MachineKey.Encode(data, MachineKeyProtection.All)
и
MachineKey.Decode(data, MachineKeyProtection.All)
методов API. Все работает отлично в Windows 8 и Windows Server 2012, когда включен профиль пользователя. Проблема по какой-то причине не переносит перезапуск пула приложений на Windows Server 2008 R2 with IIS 7.5
.
Первоначально у меня создалось впечатление, что мне нужно включить параметр Загрузить профиль пользователя в Пул приложений, но это не имеет никакого значения. Любая идея, что я могу здесь пропустить?
Спасибо
Ответы
Ответ 1
Может случиться так, что новый машинный ключ генерируется IIS каждый раз, когда пул приложений перерабатывается. Попробуйте установить статический ключ машины в вашем web.config, как описано здесь: Совет IIS 7 # 10 Вы можете сгенерировать машинные ключи из диспетчера IIS. Без явной установки статического ключа машины ключ шифрования/дешифрования является движущейся целью.
Ответ 2
@pstricker прав, если нет машинного ключа, тогда при запуске пула приложений создается новый ключ. API MachineKey основан на машинном ключе, поэтому его необходимо установить где-то. Если вы не хотите устанавливать machineKey в веб-конфигурацию приложения, вы все равно можете сделать это в конфигурации сервера, здесь: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config"
Кроме того, если вы хотите использовать ключ для каждого пула приложений, вы можете сделать то, что описано здесь.