我正在關注 .Net 中的Configuration檔案,但在使用 Visual Studio 2022 (.Net 6.0) 中的 User Secrets 時遇到了問題。
到目前為止,我已經:
- 安裝了 Microsoft.Extensions.Configuration.UserSecrets 和 Microsoft.Extensions.Hosting。
- 確認
<UserSecretsId>已添加到 .csproj 檔案中
代碼
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
// Retrieve App Secrets
using IHost host = Host.CreateDefaultBuilder(args).Build();
IConfiguration config = host.Services.GetRequiredService<IConfiguration>();
string secret = config.GetValue<string>("DUMMY_VALUE");
...
await host.RunAsync();
secrets.json(通過右鍵單擊專案并選擇“管理用戶機密”打開)
{
"DUMMY_VALUE": "dummy-test-value"
}
在上面,secret為空。基于檔案中的這一行,我認為上面的代碼將創建一個能夠讀取 secrets.json 檔案的默認配置。
自從提出和回答了類似的問題以來,這種作業方式似乎已經更新,比如這個。我也一直在參考有關 Secrets in ASP applications 的檔案,但仍然無法發現我所缺少的內容。
uj5u.com熱心網友回復:
在這個答案和AddUserSecrets檔案的幫助下,我有了一個可行的解決方案:構造一個具有所需功能的自定義配置物件。
代碼
using Microsoft.Extensions.Configuration;
// Retrieve App Secrets
IConfiguration config = new ConfigurationBuilder()
.AddUserSecrets<SomeClass>()
.Build();
string secret = config.GetValue<string>("DUMMY_VALUE");
...
在這里,SomeClass可以是程式集中的任何類。IDE 中的描述AddUserSecrets<T>說:
AddUserSecrets 將在包含類 T 的程式集中搜索 Microsoft.Configuration.UserSecrets.UserSecretsIdAttribute 的某些實體,該實體指定用戶機密 ID。
執行問題中列出的步驟后,此代碼成功讀取 secrets.json 檔案。ASP.NET Core applications中的 Secrets 檔案中暗示了此解決方案。
正如 Bellrampion 所提到的,.Net檔案中的配置中描述的步驟只會讀取配置中的 secrets.json 檔案Development——我在 Visual Studio 2022 中不認為這是一個選項。基于此,如果你想使用 User在 VS 2022 中的 .Net 控制臺應用程式中進行秘密管理,您可能需要像上面那樣構造自定義配置物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/516276.html
上一篇:“[AppDelegate視窗]:無法識別的選擇器已發送到實體”自0.69.6到0.70.2版本以來的AppClip和任何其他目標的錯誤
