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

Lea*_*oot 21 .net c# asp.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.

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

谢谢

pst*_*ker 13

每次应用程序池回收时,IIS可能会生成一个新的机器密钥.尝试在web.config中设置静态计算机密钥,如下所述:IIS 7提示#10您可以从IIS管理器生成计算机密钥.如果没有明确设置静态机器密钥,您的加密/解密密钥就是一个移动目标.


Tam*_*mas 7

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

此外,如果您需要每个应用程序池计算机密钥,您可以执行此处描述的操作.