[英]Cannot read user secrets in .net core 2.1
我在嘗試讀取用戶機密時遇到問題。 我在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 沒有數據。 我認為后一個是添加用戶機密的那個。 但為什么是空的?
我有一個項目分成兩個部分,但我不能為我的生命得到了秘密的衍生項目加載,它有完全相同的項目環境,包括secrets.json
在VS2017項目樹....但它不會加載。
在檢查每個上的實際.csproj
文件時,唯一的區別是生成的項目沒有UserSecretsId
條目所以我只是右鍵單擊項目,點擊Manage User Secrets
然后關閉隨后的Json編輯器,無需修改。
當我接下來運行項目時,我的原始secrets.json
被加載了......而不是空白的。
看來,如果你的項目文件夾中有secrets.json
,這會覆蓋由Manage User Secrets
創建的文件,這些文件在C:\\Users\\<user>\\AppData\\Roaming\\Microsoft\\UserSecrets\\<userSercretsId>
創建它們
我在一個測試項目中讓它像這樣工作。 在 Startup.cs 中,我做了:
internal IConfigurationRoot Configuration { get; private set; }
public override void ConfigureTestServices(ref IServiceCollection services)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json",
optional: false,
reloadOnChange: true);
builder.AddUserSecrets<Startup>(false);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
services.AddScoped<IConfigurationRoot>(option => Configuration);
// ... more settings
}
在配置文件中,您可以通過以下方式簡單地訪問它
var secretValue = Configuration["SomeUserSecret"];
在外部,在您的測試類中,您通過在構造函數中指定IConfigurationRoot config
來使用依賴注入,並將配置分配給 class 屬性,然后像訪問它一樣訪問它
var secretValue = config["SomeUserSecret"];
關於准備工作,我發現這個有用的提示描述了您的項目的幾個准備步驟。 簡而言之,您需要編輯 csproj 文件並
<UserSecretsId>Insert New Guid Here</UserSecretsId>
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/>
嘗試沒有錯誤。 例如builder.AddUserSecrets();
我有同樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.