Problem
Sie haben Benutzergeheimnisse ordnungsgemäß konfiguriert, aber das Framework tauscht den geheimen Wert zur Laufzeit nicht aus. Es scheint, dass secrets.json überhaupt nicht geladen wird.
Prüfen Sie, ob Sie GenerateAssemblyInfo=false verwenden in Ihrer .csproj-Datei.
Wenn Sie eine Benutzergeheimnisdatei hinzufügen, wird eine Benutzergeheimnis-GUID generiert und als UserSecretsId in Ihre .csproj-Datei eingefügt Eigentum. Außerdem fügt es diese Guid in ein Assembly-Info-Attribut namens UserSecretsIdAttribute. ein Wenn Sie GenerateAssemblyInfo=false haben , wird UserSecretsIdAttribute nicht hinzugefügt für Sie, weshalb die Datei mit den Benutzergeheimnissen zur Laufzeit nicht geladen wird.
Wenn Sie GenerateAssemblyInfo=false gesetzt haben in Ihrer .csproj-Datei kann Ihre .csproj-Datei etwa so aussehen:
<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)
Lösung
So verwenden Sie GenerateAssemblyInfo=false und Benutzergeheimnisse gleichzeitig, müssen Sie UserSecretsIdAttribute hinzufügen in Ihrem Projekt wie folgt:
using System;
using System.Reflection;
[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("b5dc3595-d335-49aa-b0a6-96e2f08e2206")]
Code language: C# (cs)
Hinweis:Sie müssen dieselbe Guid verwenden, die in der .csproj UserSecretsId-Eigenschaft enthalten ist. In diesem Beispiel ist es b5dc3595-d335-49aa-b0a6-96e2f08e2206 .
Wenn Sie GenerateAssemblyInfo=false nicht verwenden müssen , und entfernen Sie es dann aus Ihrer .csproj-Datei.