LoginSignup
1
0

More than 1 year has passed since last update.

.Net6.0でワーカーサービスを作ると、UserSecretsがうまく働かない

Last updated at Posted at 2021-10-07

はじめに

.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パッケージを直接参照しないと、この属性がつかないっぽい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0