默认情况下,机器密钥设置为自动生成且按应用程序(AutoGenerate,IsolateApps)。 MSDN声明解密密钥和验证密钥基于Web应用程序ID。我在我的IIS 7服务器上托管了两个ASP.NET MVC 2站点,但发现机器密钥是相同的。我通过使用反射来验证这一点,以查看ValidationKeyInternal和DecryptionKeyInternal属性。我还通过在一个站点上生成防伪令牌cookie并将其传递给另一个站点来测试它,并且可以读取cookie。
经过反复试验,我发现如果应用程序池标识发生更改,密钥将会更改。这两个站点具有相同的密钥,因为它们在网络服务凭证下运行。一旦我更改了一个站点的应用程序池标识,他们就会开始使用不同的验证/加密密钥。
但是,在将这两个站点部署到另一台服务器之后,即使更改了应用程序池标识,我也总是获得相同的机器密钥。这两台服务器具有相同的硬件和软件配置。
我想知道是否存在关于如何在AutoGenerate,IsolateApps设置下生成机器密钥的实际逻辑的参考。在Web上,有很多文章讨论在Web场方案中设置相同的机器密钥。但我在对面遇到了问题。每个Web应用程序自动密钥生成似乎无法正常工作。以前是否有人遇到过同样的问题?
答案 0 :(得分:0)
您是否有可能覆盖IIS设置的web.config设置?这可能是一个因素,好像你告诉服务器使用特定密钥,然后他们可能会这样做。