无法访问 ASP.net 核心 3.0 中的用户机密

Can't access User Secrets in ASP.net core 3.0

我的问题很简单。 我有一个 ASP.net 核心 3.0 应用程序,我使用 visualstudio 添加了秘密并将我的秘密正常粘贴到秘密文件中。 然后在我的 Program.cs 中,我添加了对 addusersecrets 的调用,如下所示:

...
...
.AddUserSecrets<Startup>()

但是当我在 appsettings.json 中像 Configuration["Authentication:Secret"] 这样调用我的秘密时,我在 return.

中得到了一个空值

我浏览了 Whosebug 并尝试了如下解决方案,例如更改我的 addsecrets:

.AddUserSecrets("fds...-...-...askd")

//OR

.AddUserSecrets(typeof(Startup).Assembly, true, reloadOnChange: true)

BUt none then 有效。

我想知道这个秘密的东西是否甚至可以在 asp.net 核心上运行,因为我看不出我的代码不起作用的任何原因。请问如果有人得到它,你能告诉我一个解决方案吗? 谢谢

你的代码是这样的吗?

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", 
                     optional: false, 
                     reloadOnChange: true)
        .AddEnvironmentVariables();

    if (env.IsDevelopment())
    {
        builder.AddUserSecrets<Startup>();
    }

    Configuration = builder.Build();
}

请务必检查您是否已将 "ASPNETCORE_ENVIRONMENT" 变量设置为 "Development",否则您的应用将不会添加您的用户机密。

  • 在 powershell 中:

    $Env:ASPNETCORE_ENVIRONMENT = "Development"

  • 命令:

    setx ASPNETCORE_ENVIRONMENT "Development"

用户机密现在存储在 csproj 项目文件中。这就是您阅读它的方式(见图)。我正在使用 asp.net 核心 5

对于不使用 Startup 的 .Net 6,加载程序集如

build.AddUserSecrets(Assembly.GetExecutingAssembly())