So fügen Sie Benutzergeheimnisse in einer .NET Core-Konsolen-App hinzu

 C Programming >> C-Programmierung >  >> Tags >> .NET
So fügen Sie Benutzergeheimnisse in einer .NET Core-Konsolen-App hinzu

Das Feature „Benutzergeheimnisse“ in .NET Core ist eine sichere und einfache Möglichkeit, Werte in „appsettings.json“ zu überschreiben. Die überschriebenen Werte existieren nur in einer Datei, die sich in Ihrer eigenen Entwicklungsumgebung befindet, sodass Sie sie nicht versehentlich in Ihr Versionsverwaltungs-Repository übertragen.

Dieses Feature ist in ASP.NET standardmäßig aktiviert, und das Framework erledigt die meiste Arbeit für Sie. Aber was ist, wenn Sie einer Konsolen-App oder einem anderen Projekttyp außer ASP.NET Benutzergeheimnisse hinzufügen möchten?

Es sind einige weitere Schritte erforderlich, um Benutzergeheimnisse in einem Nicht-ASP.NET-Projekt zum Laufen zu bringen. In diesem Artikel wird erläutert, wie Benutzergeheimnisse in einem Konsolen-App-Projekt hinzugefügt und verwendet werden.

1 – Microsoft.Extensions.Configuration.UserSecrets-Paket hinzufügen

Führen Sie Folgendes in der Paket-Manager-Konsole aus (Ansicht> Andere Fenster> Paket-Manager-Konsole).

Install-Package Microsoft.Extensions.Configuration.UserSecrets
Code language: PowerShell (powershell)

Dadurch wird die Paketreferenz mit der neuesten Version zu Ihrer .csproj-Datei hinzugefügt.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" />
  </ItemGroup>
</Project>


Code language: HTML, XML (xml)

2 – Secrets.json hinzufügen

  • Klicken Sie mit der rechten Maustaste auf das Projekt> klicken Sie auf Benutzergeheimnisse verwalten .
  • Dadurch wird die Datei secrets.json erstellt und geöffnet.

An dieser Stelle ist es nur eine leere JSON-Datei:

{

}
Code language: JSON / JSON with Comments (json)

3 – Einstellungen aus appsettings.json in secrets.json überschreiben

Nehmen wir an, Ihre appsettings.json sieht so aus:

{
  "ApiKey": "1234",
  "Enabled": true,
  "Timeout": 5000,
  "ConnectionStrings": {
    "DefaultDB": "Data Source=ProdServer;Initial Catalog=StocksDB;Integrated Security=SSPI"
  }
}

Code language: JSON / JSON with Comments (json)

Und Sie möchten ConnectionStrings überschreiben. Fügen Sie in secrets.json Folgendes ein:

{
  "ConnectionStrings": {
    "DefaultDB": "Data Source=localhost;Initial Catalog=StocksDB;Integrated Security=SSPI"
  }
}

Code language: JSON / JSON with Comments (json)

Sie können alle Einstellungen aus appsettings.json überschreiben, indem Sie sie zu secrets.json hinzufügen.

4 – AddUserSecrets() aufrufen

Rufen Sie ConfigurationBuilder.AddUserSecrets() auf. Dadurch wird die Benutzergeheimnisdatei geladen, die Sie in den obigen Schritten hinzugefügt haben. Alle Einstellungen, die Sie außer Kraft setzen, sind verfügbar, wenn Sie das Konfigurationsobjekt verwenden.

Hinweis:Dies setzt voraus, dass Sie ConfigurationBuilder bereits verwenden und appsettings.json verwenden. Wenn Ihnen das nicht vertraut vorkommt, werfen Sie einen Blick auf diesen Artikel, der erklärt, wie Sie in einer Konsolen-App aus appsettings.json lesen.

using Microsoft.Extensions.Configuration;
class Program
{
	static void Main(string[] args)
	{
		var config = new ConfigurationBuilder()
			.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
			.AddJsonFile("appsettings.json")
			.AddUserSecrets<Program>()
			.Build();



		var conString = config.GetConnectionString("DefaultDB");

		Console.WriteLine(conString);
	}
}
Code language: C# (cs)

Wenn Sie dies ausführen, wird die Verbindungszeichenfolge von secrets.json:

ausgegeben
Data Source=localhost;Initial Catalog=StocksDB;Integrated Security=SSPICode language: plaintext (plaintext)