我正在运行带有 AspNet Mvc Core RC1 网站的生产服务器(Windows Server 2012)。
我在日志中看到以下内容:
Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.
检查 DataProtection 的源代码后,我将问题跟踪到以下方法调用:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
由于某种原因,这可能会在服务器上返回 null。我没有任何特殊的自定义配置,我已经阅读了 docs所以我认为默认值会起作用。
我认为问题在于 IIS 网站未在特定用户的上下文中运行,但我不知道如何确认或解决此问题。我的网站配置了自己的池。
顺便说一句:运行用于存储 key 的内存存储库的结果会导致它们在应用程序退出时回收,这非常烦人,甚至不适合在生产环境中使用。
最佳答案
应在 IIS 配置中加载用户配置文件。
打开 IIS,右键单击应用程序池,然后单击高级设置。并将“加载用户配置文件”设置为 true。重新启动您的应用程序,它应该可以完美运行。
关于iis - 在 IIS 中运行时,AspNet Core 使用内存存储库进行数据保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099136/