問題
ユーザー シークレットを適切に構成しましたが、フレームワークは実行時にシークレット値をスワップしません。 secrets.json をまったくロードしていないようです。
GenerateAssemblyInfo=false を使用しているかどうかを確認します .csproj ファイルで。
ユーザー シークレット ファイルを追加すると、ユーザー シークレット GUID が生成され、それが UserSecretsId として .csproj に配置されます。 財産。また、この GUID を UserSecretsIdAttribute. というアセンブリ情報属性に配置します。 GenerateAssemblyInfo=false の場合 、UserSecretsIdAttribute を追加しません そのため、実行時にユーザー シークレット ファイルが読み込まれません。
GenerateAssemblyInfo=false を入れた場合 .csproj ファイルでは、.csproj ファイルは次のようになります。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UserSecretsId>b5dc3595-d335-49aa-b0a6-96e2f08e2206</UserSecretsId>
</PropertyGroup>
</Project>
Code language: HTML, XML (xml)
解決策
GenerateAssemblyInfo=false を使用するには とユーザー シークレットを同時に取得するには、 UserSecretsIdAttribute を追加する必要があります あなたのプロジェクトでは、次のように:
using System;
using System.Reflection;
[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("b5dc3595-d335-49aa-b0a6-96e2f08e2206")]
Code language: C# (cs)
注:.csproj UserSecretsId プロパティにあるものと同じ GUID を使用する必要があります。この例では、b5dc3595-d335-49aa-b0a6-96e2f08e2206 です .
GenerateAssemblyInfo=false を使用する必要がない場合 、次に .csproj ファイルから削除します。