应用程序池回收时,计算机密钥会更改

时间:2015-11-13 13:04:08

标签: c# asp.net .net iis machinekey

我正在使用MachineKey API来加密/解密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上重新启动应用程序池。

最初我觉得我需要在应用程序池上启用加载用户个人资料设置,但这没有任何区别。知道我在这里可能缺少什么吗?

由于

2 个答案:

答案 0 :(得分:13)

每次应用程序池回收时,IIS可能会生成一个新的机器密钥。尝试在web.config中设置静态计算机密钥,如下所述:IIS 7 Tip #10 You can generate machine keys from the IIS manager。如果没有明确设置静态机器密钥,您的加密/解密密钥就是一个移动目标。

答案 1 :(得分:6)

@pstricker是正确的,如果没有定义机器密钥,那么在应用程序池启动时会生成一个新密钥。 MachineKey API基于机器密钥,因此需要在某处设置。如果您不想在应用程序的Web配置中设置machineKey,您仍然可以在服务器的机器配置中执行此操作:“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config “

此外,如果您需要每个应用程序池计算机密钥,您可以执行here所述的内容。