【问题标题】:Machine Key changes when app pool is recycled回收应用程序池时机器密钥更改
【发布时间】:2023-03-26 16:00:01
【问题描述】:

我正在使用 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 上重新启动应用程序池。

最初我的印象是我需要在 Application Pool 上启用 Load User Profile 设置,但这并没有什么不同。知道我在这里可能缺少什么吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 其实使用 MachineKey API 的想法是替代 DPAPI,而不必担心手动设置机器密钥。静态机器密钥有效,但它不是一个选项,因为 API 应该在没有它确保每个 IIS 设置的唯一密钥的情况下工作。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 2015-01-07
      • 1970-01-01
      • 2013-08-15
      • 2011-09-20
      • 2016-06-13
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      相关资源
      最近更新 更多