Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návod
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.
Primární způsob načtení konfigurace aplikace ve webových formulářích je s položkami v souboruweb.config – buď na serveru, nebo v souvisejícím konfiguračním souboru, na který odkazujeweb.config. Statický ConfigurationManager objekt můžete použít k interakci s nastavením aplikace, připojovacími řetězci úložiště dat 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;
U 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 z web.config souboru.
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 si vědomo prostředí a pozná, jestli běží ve vašem Production nebo Development prostředí. Indikátor prostředí je nastaven v ASPNETCORE_ENVIRONMENT proměnné prostředí systému. 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í:
- appsettings.json soubor, pokud je přítomen
- nastavení aplikace. {ENVIRONMENT_NAME}.json soubor, pokud je k dispozici
- Uživatelský soubor tajných kódů na disku, pokud je k dispozici
- Proměnné prostředí
- 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, systém konfigurace zjednodušuje podřízené hodnoty a odkazuje jejich plně kvalifikované hierarchické cesty. Dvojtečka (:) odděluje jednotlivé vlastnosti v hierarchii. Například konfigurační klíč section1:key0 přistupuje k hodnotě section1 literálu objektu key0 .
Tajné kódy 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 běhu v prostředí
Development. - Přidruženo ke konkrétní aplikaci.
- Spravováno pomocí příkazu
user-secretsrozhraní .NET příkazového řádku.
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 . Napří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 bezpečném ú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í ve vaší aplikaci zjednodušené a oddělené dvojtečkami. Ale některé operační systémy neumožňují názvy proměnných prostředí obsahující znak 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 userské tajné klíče lze přepsat pomocí proměnné prostředí Parent__ApiKey.
Argumenty příkazového řádku
Konfiguraci je také možné zadat jako argumenty příkazového řádku při spuštění aplikace. Použijte dvojitou pomlčku (--) nebo lomítko (/) k označení názvu konfigurační hodnoty, kterou chcete nastavit, a hodnoty, která má být konfigurována. 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í web.config
Pokud jste aplikaci nasadili do Windows ve službě IIS, souborweb.config pořád nakonfiguruje 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ílweb.config se podobá následujícímu kódu 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 jsou aplikaci ASP.NET Core prezentovány 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>
Čti konfiguraci v aplikaci
ASP.NET Core poskytuje konfiguraci aplikace prostřednictvím IConfiguration rozhraní. Toto konfigurační rozhraní by mělo být požadováno vaší Blazor komponentou, Blazor stránkou 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 v Razor kódu komponenty můžete vložit objekt IConfiguration pomocí direktivy @inject umístěné 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"];
Můžete použít GetSection metodu pro načtení celých sekcí konfigurace a získání kolekce klíčů na určitém místě, s použitím syntaxe podobné GetSection("section1") pro načtení konfigurace pro sekci1 z předchozího příkladu.
Konfigurace silného typu
U webových formulářů bylo možné vytvořit silně typovaný konfigurační typ, který dědí z typu ConfigurationSection 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
publicvlastnosti, které odpovídají vlastnostem a odkazům na typ pro strukturu konfigurace, kterou chcete zachytit.
Pro předchozí ukázkuappsettings.json můžete definovat následující třídy, které zachytí hodnoty:
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 jako vstupní parametr nebo @inject direktivu v šablonách Razor typu IOptions<MyConfig> pro získání striktně typových konfiguračních nastavení. Vlastnost IOptions<MyConfig>.Value vrátí hodnotu MyConfig nastavenou 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 šabloně Možnosti v dokumentu ASP.NET Core.