はじめに
.Net6.0でワーカーサービスを作ってみた。
デバッグ実行しても、UserSecretsが読み取られない。
これ書いてる時点では直ってないけど、あなたが読んでるときには直ってるかもしれません。
とりあえずアップデートしましょう。
アップデートしても直らない場合は↓
解決方法
UserSecretsのパッケージを、明示的に読み込むと直る。
NuGetするか、プロジェクトファイルを直接編集してどうぞ。
↓こんな感じに、UserSecretsの行を追加します。
Versionは、Hostingと一致させると良いでしょう。
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0-rc.2.21480.5" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.0-rc.2.21480.5" />
</ItemGroup>
ワーカーサービスのプロジェクト作ると、自動でHostingのパッケージが追加されます。
UserSecretsは、Hostingパッケージの依存関係にあるから、一緒に読み込まれてるはずなのに…
.Net5.0では、Hostingのパッケージだけで、うまいことUserSecretsも有効になります。
具体的な症状
プロジェクトファイルにUserSecretsIdを入れてビルドすると、アセンブリにUserSecretsId属性がつきます。
ユーザシークレットさんは、この属性を見て、secrets.jsonのパスを特定しています。
この属性が無い場合、読み込まれません。
現在の.Net6.0では、UserSecretsパッケージを直接参照しないと、この属性がつかないっぽい。