21

我正在使用 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.

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

谢谢

4

2 回答 2

13

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

于 2015-11-19T23:46:06.627 回答
7

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

此外,如果您想要每个应用程序池机器密钥,您可以执行此处描述的操作。

于 2015-11-27T09:41:07.660 回答