我遇到的问题是UserSecrets在Mac上返回我的秘密,但不是Windows。我跟着https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?tabs=visual-studio
在Windows上,当我试图获取秘密时:Configuration["ConnectionStrings:Production"]
它返回null。
我在secrets.json
C:\Users\username\AppData\Roaming\Microsoft\UserSecrets\<userSecretsId>
个文件
我无法弄清楚为什么它无法在Windows上运行,而它在Mac上运行完美。非常感谢任何帮助。
值得注意的是,这是在Windows Server上
我现在想知道IIS的上下文中%AppData%
是否不同?
我认为this thread是正确的方向,但没有一个解决方案适合我
答案 0 :(得分:2)
IIS ApplicationPoolIdentity应该拥有自己的用户配置文件夹,该文件夹与用户文件夹不同。
要找到它,请导航到C:\ Users,您应该看到为应用程序池命名的文件夹,因此对于名为“.NET v4.5”的应用程序池,应该有一个名为“.NET v4”的用户文件夹。 5" 。在该文件夹下,您应该能够通过AppData文件夹跟踪其余的痕迹,并创建“\ AppData \ Roaming \ Microsoft \ UserSecrets”文件夹(如果它不存在)。
如果这不起作用或者您没有看到应用程序池的用户文件夹,请打开IIS管理器,选择您正在运行的应用程序池,然后打开“高级设置”(右侧链接)
打开“高级设置”后,向下滚动到“处理模型”部分,您将看到“加载用户配置文件”的配置,并确保将该值设置为True。在Windows 10中默认为true,但取决于您如何完成配置Windows的先前版本默认为False,这将使秘密不可用。