无法读取.net Core 2.1中的用户机密

时间:2018-06-27 11:50:32

标签: asp.net-core configuration

尝试读取用户机密时遇到问题。我在startup.cs中的代码如下:

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

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

            builder.AddEnvironmentVariables();
            Configuration = builder.Build();
        }

从appsettings.json和环境变量读取可以正常工作,但是无论我放入secrets.json文件中什么,都不会读取任何值。项目文件中UserSecretsId的值正确,并且env.IsDevelopment()为true。

配置包含三个提供程序。一个JsonConfigurationProvider包含appsettings.json中的数据,一个EnvironmentVariablesConfigurationProvider包含环境变量中的值,一个JsonConfigurationProvider没有数据。我认为后一种是添加用户机密的一种。但是为什么它是空的?

2 个答案:

答案 0 :(得分:0)

我不得不将一个项目分成两个部分,但是我一生都无法在生成的项目中加载秘密,它具有完全相同的项目环境,包括VS2017项目中的secrets.json树...。但是它不会加载。

在检查每个文件上的实际.csproj文件时,唯一的区别是,生成的项目没有UserSecretsId条目,因此我只用鼠标右键单击项目,点击{{1 }},然后关闭随后的Json编辑器,而无需进行修改。

下一个运行项目时,我的原始Manage User Secrets已加载...而不是空白的。

看来,如果您的项目文件夹中有secrets.json,它将覆盖secrets.json创建的文件,而Manage User SecretsC:\Users\<user>\AppData\Roaming\Microsoft\UserSecrets\<userSercretsId>中创建文件

答案 1 :(得分:-1)

尝试不带错误。 例如builder.AddUserSecrets();

我有同样的问题。