Sdílet prostřednictvím


Konfigurace aplikace

Tip

Tento obsah je výňatek z eBooku pro Blazor vývojáře webových formulářů ASP NET pro Azure, který je k dispozici na webu .NET Docs nebo jako bezplatný soubor PDF ke stažení, který si můžete přečíst offline.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Primární způsob načtení konfigurace aplikace ve webových formulářích je s položkami v souboru web.config – buď na serveru, nebo v souvisejícím konfiguračním souboru, na který odkazuje web.config. Statický ConfigurationManager objekt můžete použít k interakci s nastavením aplikace, úložištěm dat připojovací řetězec a dalšími rozšířenými poskytovateli konfigurace, kteří jsou do aplikace přidáni. Je typické vidět interakce s konfigurací aplikace, jak je vidět v následujícím kódu:

var configurationValue = ConfigurationManager.AppSettings["ConfigurationSettingName"];
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionName"].ConnectionString;

Při ASP.NET core a na straně Blazorserveru může být soubor web.config k dispozici, pokud je vaše aplikace hostovaná na serveru služby Windows IIS. S touto konfigurací ale není ConfigurationManager žádná interakce a můžete získat strukturovanější konfiguraci aplikace z jiných zdrojů. Pojďme se podívat, jak se shromažďuje konfigurace a jak můžete dál přistupovat k informacím o konfiguraci ze souboru web.config .

Zdroje konfigurace

ASP.NET Core rozpoznává, že existuje mnoho zdrojů konfigurace, které můžete pro svou aplikaci použít. Architektura se ve výchozím nastavení snaží nabídnout to nejlepší z těchto funkcí. Konfigurace se čte a agreguje z těchto různých zdrojů ASP.NET Core. Později načtené hodnoty pro stejný konfigurační klíč mají přednost před dřívějšími hodnotami.

ASP.NET Core byla navržena tak, aby byla cloudová a aby byla konfigurace aplikací pro operátory i vývojáře jednodušší. ASP.NET Core je ví o prostředí a ví, jestli běží ve vašem Production nebo Development prostředí. Indikátor prostředí je nastaven v ASPNETCORE_ENVIRONMENT systémové proměnné prostředí. Pokud není nakonfigurovaná žádná hodnota, aplikace se ve výchozím nastavení spustí v Production prostředí.

Aplikace může aktivovat a přidat konfiguraci z několika zdrojů na základě názvu prostředí. Ve výchozím nastavení se konfigurace načte z následujících prostředků v uvedeném pořadí:

  1. appsettings.json soubor, pokud je k dispozici
  2. Appsettings. {ENVIRONMENT_NAME}.json soubor, pokud je k dispozici
  3. Uživatelský soubor tajných kódů na disku, pokud je k dispozici
  4. Proměnné prostředí
  5. Argumenty příkazového řádku

formát appsettings.json a přístup

Soubor appsettings.json může být hierarchický s hodnotami strukturovanými jako následující JSON:

{
  "section0": {
    "key0": "value",
    "key1": "value"
  },
  "section1": {
    "key0": "value",
    "key1": "value"
  }
}

Když se zobrazí předchozí json, konfigurační systém zploštějí podřízené hodnoty a odkazuje na jejich plně kvalifikované hierarchické cesty. Dvojtečka (:) odděluje každou vlastnost v hierarchii. Například konfigurační klíč section1:key0 přistupuje k hodnotě section1 literálu objektu key0 .

Tajné klíče uživatelů

Tajné kódy uživatelů jsou:

  • Hodnoty konfigurace uložené v souboru JSON na pracovní stanici vývojáře mimo složku pro vývoj aplikací
  • Načteno pouze při spuštění v Development prostředí.
  • Přidruženo ke konkrétní aplikaci.
  • Spravované pomocí příkazu rozhraní příkazového user-secrets řádku .NET.

Spuštěním příkazu nakonfigurujte aplikaci pro úložiště tajných user-secrets kódů:

dotnet user-secrets init

Předchozí příkaz přidá UserSecretsId prvek do souboru projektu. Element obsahuje identifikátor GUID, který slouží k přidružení tajných kódů k aplikaci. Pak můžete pomocí příkazu definovat tajný kód set . Příklad:

dotnet user-secrets set "Parent:ApiKey" "12345"

Předchozí příkaz zpřístupní Parent:ApiKey konfigurační klíč na pracovní stanici vývojáře s hodnotou 12345.

Další informace o vytváření, ukládání a správě tajných kódů uživatelů najdete v Sejf úložišti tajných kódů aplikací při vývoji v dokumentu ASP.NET Core.

Proměnné prostředí

Další sada hodnot načtených do konfigurace vaší aplikace je proměnné prostředí systému. Všechna nastavení proměnných prostředí vašeho systému jsou teď přístupná prostřednictvím konfiguračního rozhraní API. Hierarchické hodnoty jsou při čtení v aplikaci zploštěné a oddělené dvojtečkami. Některé operační systémy ale neumožňují názvy proměnných prostředí dvojtečky. ASP.NET Core toto omezení řeší převodem hodnot s dvojitým podtržítkem (__) na dvojtečku při přístupu. Hodnotu Parent:ApiKey z výše uvedené části tajných kódů uživatele lze přepsat pomocí proměnné Parent__ApiKeyprostředí .

Argumenty příkazového řádku

Konfiguraci je také možné zadat jako argumenty příkazového řádku při spuštění aplikace. Pomocí dvojmlčky (--) nebo lomítka (/) označující název konfigurační hodnoty, kterou chcete nastavit, a hodnotu, která se má konfigurovat. Syntaxe se podobá následujícím příkazům:

dotnet run CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3
dotnet run --CommandLineKey1 value1 /CommandLineKey2 value2
dotnet run Parent:ApiKey=67890

Vrácení souboru web.config

Pokud jste aplikaci nasadili do Windows ve službě IIS, soubor web.config pořád konfiguruje službu IIS pro správu vaší aplikace. Ve výchozím nastavení služba IIS přidá odkaz na modul ASP.NET Core (ANCM). ANCM je nativní modul IIS, který hostuje vaši aplikaci místo webového serveru Kestrel. Tento oddíl web.config vypadá podobně jako následující kód XML:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Konfiguraci specifickou pro aplikaci lze definovat vnořením environmentVariables elementu do elementu aspNetCore . Hodnoty definované v této části se ASP.NET aplikaci Core zobrazí jako proměnné prostředí. Proměnné prostředí se načítají správně během tohoto segmentu spuštění aplikace.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="Parent:ApiKey" value="67890" />
  </environmentVariables>
</aspNetCore>

Čtení konfigurace v aplikaci

ASP.NET Core poskytuje konfiguraci aplikace prostřednictvím IConfiguration rozhraní. Toto konfigurační rozhraní by měly být požadovány vašimi Blazor komponentami, Blazor stránkami a všemi dalšími třídami spravovanými ASP.NET Core, které potřebují přístup ke konfiguraci. Architektura ASP.NET Core automaticky naplní toto rozhraní vyřešenou konfigurací nakonfigurovanou dříve. Blazor Na stránce nebo kódu Razor komponenty můžete objekt vložit IConfiguration direktivou @inject v horní části souboru .razor takto:

@inject IConfiguration Configuration

Tento předchozí příkaz zpřístupní IConfiguration objekt jako Configuration proměnnou ve zbytku šablony Razor.

Individuální nastavení konfigurace lze přečíst zadáním hierarchie nastavení konfigurace, která se hledá jako parametr indexeru:

var mySetting = Configuration["section1:key0"];

Pomocí metody můžete načíst celé oddíly konfigurace a GetSection načíst kolekci klíčů v určitém umístění s syntaxí podobnou GetSection("section1") načtení konfigurace pro oddíl1 z předchozího příkladu.

Konfigurace silného typu

U webových formulářů bylo možné vytvořit typ konfigurace silného ConfigurationSection typu, který dědil z typu a přidružených typů. ConfigurationSection Pro tyto hodnoty konfigurace můžete nakonfigurovat některá obchodní pravidla a zpracování.

V ASP.NET Core můžete zadat hierarchii tříd, která bude přijímat hodnoty konfigurace. Tyto třídy:

  • Není nutné dědit z nadřazené třídy.
  • Měla by obsahovat public vlastnosti, které odpovídají vlastnostem a odkazům na typ pro strukturu konfigurace, kterou chcete zachytit.

Pro předchozí appsettings.json ukázku byste mohli definovat následující třídy pro zachycení hodnot:

public class MyConfig
{
    public MyConfigSection section0 { get; set;}

    public MyConfigSection section1 { get; set;}
}

public class MyConfigSection
{
    public string key0 { get; set; }

    public string key1 { get; set; }
}

Tuto hierarchii tříd lze naplnit přidáním následujícího řádku do Startup.ConfigureServices metody (nebo příslušného umístění v Program.cs pomocí builder.Services vlastnosti místo services):

services.Configure<MyConfig>(Configuration);

Ve zbytku aplikace můžete přidat vstupní parametr do tříd nebo @inject direktivy v šablonách Razor typu IOptions<MyConfig> , abyste získali nastavení konfigurace silného typu. Vlastnost IOptions<MyConfig>.Value vrátí hodnotu vyplněnou MyConfig z nastavení konfigurace.

@inject IOptions<MyConfig> options
@code {
    var MyConfiguration = options.Value;
    var theSetting = MyConfiguration.section1.key0;
}

Další informace o funkci Možnosti najdete v vzoru Možnosti v dokumentu ASP.NET Core .