Číst v angličtině

Sdílet prostřednictvím


Tvůrci konfigurace pro ASP.NET

Stephen Molloy a Rick Anderson

Tvůrci konfigurací poskytují moderní a agilní mechanismus pro ASP.NET aplikace pro získání hodnot konfigurace z externích zdrojů.

Tvůrci konfigurací:

  • Jsou k dispozici v rozhraní .NET Framework 4.7.1 a novějším.
  • Poskytuje flexibilní mechanismus pro čtení hodnot konfigurace.
  • Vyřešte některé základní potřeby aplikací při přechodu do kontejneru a cloudového prostředí zaměřeného na cloud.
  • Dá se použít ke zlepšení ochrany konfiguračních dat tím, že v konfiguračním systému .NET použijete dříve nedostupné zdroje (například Azure Key Vault a proměnné prostředí).

Tvůrci konfigurace klíč/hodnota

Běžným scénářem, který můžou tvůrci konfigurace zpracovat, je poskytnout základní mechanismus výměny klíčů a hodnot pro oddíly konfigurace, které se řídí vzorem klíč/hodnota. Koncept rozhraní .NET Framework nástroje ConfigurationBuilders není omezen na konkrétní oddíly nebo vzory konfigurace. Mnoho tvůrce konfigurací ale pracuje ve Microsoft.Configuration.ConfigurationBuilders vzoru klíč/hodnota (github, NuGet).

Nastavení konfigurace klíč/hodnota

Následující nastavení platí pro všechny tvůrce konfigurace klíč/hodnota v Microsoft.Configuration.ConfigurationBuilderssouboru .

Režim

Tvůrci konfigurace používají externí zdroj informací o klíč/hodnotě k naplnění vybraných prvků klíče/hodnoty konfiguračního systému. Konkrétně oddíly <appSettings/> a <connectionStrings/> oddíly dostávají zvláštní zacházení od tvůrců konfigurace. Tvůrci pracují ve třech režimech:

  • Strict – Výchozí režim. V tomto režimu funguje tvůrce konfigurace pouze v dobře známých oddílech konfigurace klíč/hodnota-cen. Strict režim vyčíslí každý klíč v oddílu. Pokud se v externím zdroji najde odpovídající klíč:

    • Tvůrci konfigurace nahradí hodnotu ve výsledné části konfigurace hodnotou z externího zdroje.
  • Greedy - Tento režim úzce souvisí s režimem Strict . Místo toho, aby byly omezeny na klíče, které již existují v původní konfiguraci:

    • Tvůrci konfigurace přidají do výsledné části konfigurace všechny páry klíč/hodnota z externího zdroje.
  • Expand - Pracuje s nezpracovaným XML předtím, než se parsuje do objektu oddílu konfigurace. Lze si ji představit jako rozšíření tokenů v řetězci. Jakákoli část nezpracovaného řetězce XML, která odpovídá vzoru ${token} , je kandidátem na rozšíření tokenu. Pokud se v externím zdroji nenajde žádná odpovídající hodnota, token se nezmění. Tvůrci v tomto režimu nejsou omezeni na <appSettings/> oddíly a <connectionStrings/> oddíly.

Následující kód z web.config umožňuje EnvironmentConfigBuilder v Strict režimu:

<configuration>

  <configSections>
    <section name="configBuilders" 
             type="System.Configuration.ConfigurationBuildersSection, 
             System.Configuration, Version=4.0.0.0, Culture=neutral, 
             PublicKeyToken=b03f5f7f11d50a3a"
             restartOnExternalChanges="false" requirePermission="false" />
  </configSections>

  <configBuilders>
    <builders>
      <add name="MyEnvironment"
           type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, 
           Microsoft.Configuration.ConfigurationBuilders.Environment, 
           Version=1.0.0.0, Culture=neutral" />
    </builders>
  </configBuilders>

  <appSettings configBuilders="MyEnvironment">
    <add key="ServiceID" value="ServiceID value from web.config" />
    <add key="ServiceKey" value="ServiceKey value from web.config" />
  </appSettings>

  <connectionStrings configBuilders="MyEnvironment">
    <add name="default" connectionString="Data Source=web.config/mydb.db" />
  </connectionStrings>

Následující kód přečte <appSettings/> a <connectionStrings/> zobrazí se v předchozím souboru web.config :

using System;
using System.Configuration;
using System.Web.UI;

namespace MyConfigBuilders
{
    public partial class About : Page
    {
        public string ServiceID { get; set; }
        public string ServiceKey { get; set; }
        public string ConString { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            ServiceID = ConfigurationManager.AppSettings["ServiceID"];
            ServiceKey = ConfigurationManager.AppSettings["ServiceKey"];
            ConString = ConfigurationManager.ConnectionStrings["default"]
                                            ?.ConnectionString;
        }
    }
}

Předchozí kód nastaví hodnoty vlastností na:

  • Hodnoty v souboru web.config , pokud klíče nejsou nastaveny v proměnných prostředí.
  • Hodnoty proměnné prostředí, pokud jsou nastaveny.

Bude například ServiceID obsahovat:

  • Hodnota ServiceID z web.config, pokud proměnná ServiceID prostředí není nastavená.
  • Hodnota ServiceID proměnné prostředí, pokud je nastavena.

Následující obrázek ukazuje <appSettings/> klíče/hodnoty z předchozího souboru web.config nastaveného v editoru prostředí:

Snímek obrazovky ukazuje editor proměnných prostředí se zvýrazněnými proměnnými ServiceID a ServiceKey.

Poznámka: Možná budete muset ukončit a restartovat Visual Studio, abyste viděli změny v proměnných prostředí.

Zpracování předpon

Předpony klíčů můžou zjednodušit nastavení klíčů, protože:

  • Konfigurace rozhraní .NET Framework je složitá a vnořená.
  • Externí zdroje klíč/hodnota jsou obvykle základní a ploché podle povahy. Například proměnné prostředí nejsou vnořené.

Pomocí některého z následujících přístupů vložte do konfigurace proměnné prostředí i <appSettings/> <connectionStrings/> do konfigurace:

  • S výchozím Strict režimem EnvironmentConfigBuilder a příslušnými názvy klíčů v konfiguračním souboru. Tento přístup přijímá předchozí kód a revize. Pomocí tohoto přístupu nemůžete mít identicky pojmenované klíče v obou <appSettings/> i <connectionStrings/>.
  • Použijte dva EnvironmentConfigBuilders v Greedy režimu s odlišnými předponami a stripPrefix. Díky tomuto přístupu může aplikace číst <appSettings/> a <connectionStrings/> nemusí aktualizovat konfigurační soubor. V další části stripPrefix se dozvíte, jak to udělat.
  • Použijte dva EnvironmentConfigBuilders v Greedy režimu s odlišnými předponami. S tímto přístupem nemůžete mít duplicitní názvy klíčů, protože názvy klíčů se musí lišit podle předpony. Příklad:
<configuration>

  <configSections>
    <section name="configBuilders"
             type="System.Configuration.ConfigurationBuildersSection, 
             System.Configuration, Version=4.0.0.0, Culture=neutral, 
             PublicKeyToken=b03f5f7f11d50a3a"
             restartOnExternalChanges="false" requirePermission="false" />
  </configSections>

  <configBuilders>
    <builders>
      <add name="AS_Environment" mode="Greedy" prefix="AppSetting_"
           type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, 
           Microsoft.Configuration.ConfigurationBuilders.Environment" />
      <add name="CS_Environment" mode="Greedy" prefix="ConnStr_"
           type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, 
           Microsoft.Configuration.ConfigurationBuilders.Environment" />
    </builders>
  </configBuilders>

  <appSettings configBuilders="AS_Environment">
    <add key="AppSetting_ServiceID" value="ServiceID value from web.config" />
    <add key="AppSetting_default" value="AppSetting_default value from web.config" />
  </appSettings>

  <connectionStrings configBuilders="CS_Environment">
    <add name="ConnStr_default" connectionString="Data Source=web.config/mydb.db" />
  </connectionStrings>

S předchozím kódem je možné použít stejný zdroj plochých klíč/hodnota k naplnění konfigurace pro dva různé oddíly.

Následující obrázek ukazuje <appSettings/> klíče a <connectionStrings/> hodnoty z předchozího souboru web.config nastaveného v editoru prostředí:

Snímek obrazovky ukazuje editor proměnných prostředí se zvýrazněnými proměnnými AppSetting_default, AppSetting_ServiceID a ConnStr_default proměnnými.

Následující kód načte <appSettings/> klíče a <connectionStrings/> hodnoty obsažené v předchozím souboru web.config :

public partial class Contact : Page
{
    public string ServiceID { get; set; }
    public string AppSetting_default { get; set; }
    public string ConString { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        ServiceID = ConfigurationManager.AppSettings["AppSetting_ServiceID"];
        AppSetting_default = ConfigurationManager.AppSettings["AppSetting_default"];
        ConString = ConfigurationManager.ConnectionStrings["ConnStr_default"]
                                     ?.ConnectionString;
    }
}

Předchozí kód nastaví hodnoty vlastností na:

  • Hodnoty v souboru web.config , pokud klíče nejsou nastaveny v proměnných prostředí.
  • Hodnoty proměnné prostředí, pokud jsou nastaveny.

Například použití předchozího souboru web.config , klíčů/hodnot v předchozím obrázku editoru prostředí a předchozího kódu jsou nastaveny následující hodnoty:

Key Hodnota
AppSetting_ServiceID AppSetting_ServiceID z proměnných env
AppSetting_default hodnota AppSetting_default z env
ConnStr_default ConnStr_default val z env

stripPrefix

stripPrefix: logická hodnota, výchozí hodnota false.

Předchozí kód XML odděluje nastavení aplikace od připojovací řetězec, ale vyžaduje, aby všechny klíče v souboru web.config používaly zadanou předponu. Například předpona AppSetting musí být přidána ServiceID do klíče ("AppSetting_ServiceID"). V stripPrefixsouboru web.config se předpona nepoužívá. Předpona se vyžaduje ve zdroji tvůrce konfigurace (například v prostředí.) Předpokládáme, že většina vývojářů bude používat stripPrefix.

Aplikace obvykle odstraňou předponu. Následující web.config odstraní předponu:

<configuration>

  <configSections>
    <section name="configBuilders"
             type="System.Configuration.ConfigurationBuildersSection, 
             System.Configuration, Version=4.0.0.0, Culture=neutral, 
             PublicKeyToken=b03f5f7f11d50a3a"
             restartOnExternalChanges="false" requirePermission="false" />
  </configSections>

  <configBuilders>
    <builders>
      <add name="AS_Environment" mode="Greedy" prefix="AppSetting_" 
           stripPrefix="true"
           type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, 
           Microsoft.Configuration.ConfigurationBuilders.Environment, 
           Version=1.0.0.0, Culture=neutral" />
      <add name="CS_Environment" mode="Greedy" prefix="ConnStr_" 
           stripPrefix="true"
            type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, 
           Microsoft.Configuration.ConfigurationBuilders.Environment, 
           Version=1.0.0.0, Culture=neutral" />
    </builders>
  </configBuilders>

  <appSettings configBuilders="AS_Environment">
    <add key="ServiceID" value="ServiceID value from web.config" />
    <add key="default" value="AppSetting_default value from web.config" />
  </appSettings>

  <connectionStrings configBuilders="CS_Environment">
    <add name="default" connectionString="Data Source=web.config/mydb.db" />
  </connectionStrings>

V předchozím souboru default web.config je klíč v souboru i <appSettings/> <connectionStrings/>v souboru .

Následující obrázek ukazuje <appSettings/> klíče a <connectionStrings/> hodnoty z předchozího souboru web.config nastaveného v editoru prostředí:

Snímek obrazovky ukazuje editor proměnných prostředí se zvýrazněnými proměnnými AppSetting_default, AppSetting_ServiceID a ConnStr_default proměnnými.

Následující kód načte <appSettings/> klíče a <connectionStrings/> hodnoty obsažené v předchozím souboru web.config :

public partial class About2 : Page
{
    public string ServiceID { get; set; }
    public string AppSetting_default { get; set; }
    public string ConString { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        ServiceID = ConfigurationManager.AppSettings["ServiceID"];
        AppSetting_default = ConfigurationManager.AppSettings["default"];
        ConString = ConfigurationManager.ConnectionStrings["default"]
                                        ?.ConnectionString;
    }
}

Předchozí kód nastaví hodnoty vlastností na:

  • Hodnoty v souboru web.config , pokud klíče nejsou nastaveny v proměnných prostředí.
  • Hodnoty proměnné prostředí, pokud jsou nastaveny.

Například použití předchozího souboru web.config , klíčů/hodnot v předchozím obrázku editoru prostředí a předchozího kódu jsou nastaveny následující hodnoty:

Key Hodnota
ID služby AppSetting_ServiceID z proměnných env
default hodnota AppSetting_default z env
default ConnStr_default val z env

tokenPattern

tokenPattern: Řetězec, výchozí hodnota @"\$\{(\w+)\}"

Chování Expand tvůrce prohledá nezpracovaný XML tokeny, které vypadají jako ${token}. Vyhledávání se provádí pomocí výchozího regulárního výrazu @"\$\{(\w+)\}". Sada znaků, které odpovídají \w , je přísnější než XML a mnoho zdrojů konfigurace povoluje. Použijte tokenPattern , pokud je v názvu tokenu více znaků, než @"\$\{(\w+)\}" je požadováno.

tokenPattern:Řetězec:

  • Umožňuje vývojářům změnit regulární výraz, který se používá pro porovnávání tokenů.
  • Není provedeno žádné ověření, aby se zajistilo, že se jedná o dobře formátovaný, ne nebezpečný regulární výraz.
  • Musí obsahovat skupinu zachycení. Celý regulární výraz musí odpovídat celému tokenu. Prvním zachycením musí být název tokenu, který se má vyhledat ve zdroji konfigurace.

Tvůrci konfigurace v Microsoft.Configuration.ConfigurationBuilders

EnvironmentConfigBuilder

<add name="Environment"
    [mode|prefix|stripPrefix|tokenPattern] 
    type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
    Microsoft.Configuration.ConfigurationBuilders.Environment" />

EnvironmentConfigBuilder:

  • Jedná se o nejjednodušší tvůrce konfigurace.
  • Načte hodnoty z prostředí.
  • Nemá žádné další možnosti konfigurace.
  • Hodnota atributu name je libovolná.

Poznámka: V prostředí kontejneru Windows se proměnné nastavené za běhu vloží pouze do prostředí procesu EntryPointu. Aplikace, které běží jako služba nebo proces jiného než EntryPointu, tyto proměnné nezachytávají, pokud nejsou jinak vloženy prostřednictvím mechanismu v kontejneru. V případě kontejnerů založených na službě IIS/ASP.NET je aktuální verze ServiceMonitor.exe zpracovává pouze v rámci defaultAppPool. Jiné varianty kontejnerů založené na Windows mohou vyžadovat vývoj vlastního mechanismu injektáže pro procesy, které nejsou vstupními body.

UserSecretsConfigBuilder

Upozornění

Nikdy neukládejte hesla, citlivá připojovací řetězec ani jiná citlivá data ve zdrojovém kódu. Produkční tajné kódy by se neměly používat pro vývoj ani testování.

<add name="UserSecrets"
    [mode|prefix|stripPrefix|tokenPattern]
    (userSecretsId="{secret string, typically a GUID}" | userSecretsFile="~\secrets.file")
    [optional="true"]
    type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder,
    Microsoft.Configuration.ConfigurationBuilders.UserSecrets" />

V předchozím kódu XML userSecretsFile může cesta použít nebo ~/ ~\. Například cestu lze zapsat jako userSecretsFile="~/secrets.file. Další informace najdete ve třídě ConfigurationBuilders Utils .

Tento tvůrce konfigurace poskytuje funkci podobnou ASP.NET Core Secret Manageru.

UserSecretsConfigBuilder lze použít v projektech rozhraní .NET Framework, ale musí být zadán soubor tajných kódů. Alternativně můžete definovat UserSecretsId vlastnost v souboru projektu a vytvořit nezpracovaný soubor tajných kódů ve správném umístění pro čtení. Pokud chcete, aby externí závislosti zůstaly mimo projekt, je tajný soubor formátovaný ve formátu XML. Formátování XML je podrobnosti implementace a formát by se neměl spoléhat na. Pokud potřebujete sdílet soubor secrets.json s projekty .NET Core, zvažte použití SimpleJsonConfigBuilder. Formát SimpleJsonConfigBuilder pro .NET Core by měl být také považován za podrobnosti implementace, které se můžou změnit.

Atributy konfigurace pro UserSecretsConfigBuilder:

  • userSecretsId - Toto je upřednostňovaná metoda pro identifikaci souboru tajných kódů XML. Funguje podobně jako .NET Core, která k uložení tohoto identifikátoru UserSecretsId používá vlastnost projektu. Řetězec musí být jedinečný, nemusí být identifikátor GUID. Pomocí tohoto atributu UserSecretsConfigBuilder vyhledáte v dobře známém místním umístění (%APPDATA%\Microsoft\UserSecrets\<UserSecrets Id>\secrets.xml) soubor tajných kódů, který patří k tomuto identifikátoru.
  • userSecretsFile - Volitelný atribut určující soubor obsahující tajné kódy. Znak ~ lze použít na začátku pro odkaz na kořen aplikace. Tento atribut nebo userSecretsId atribut je povinný. Pokud jsou zadány oba, userSecretsFile má přednost.
  • optional: logická hodnota, výchozí hodnota true – Zabraňuje výjimce, pokud nelze najít soubor tajných kódů.
  • Hodnota atributu name je libovolná.

Soubor tajných kódů má následující formát:

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <secrets ver="1.0">
    <secret name="secret key name" value="secret value" />
  </secrets>
</root>

AzureKeyVaultConfigBuilder

<add name="AzureKeyVault"
    [mode|prefix|stripPrefix|tokenPattern]
    (vaultName="MyVaultName" |
     uri="https:/MyVaultName.vault.azure.net")
    [version="secrets version"]
    [preloadSecretNames="true"]
    type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder,
    Microsoft.Configuration.ConfigurationBuilders.Azure" />

AzureKeyVaultConfigBuilder čte hodnoty uložené ve službě Azure Key Vault.

vaultName je povinný (název trezoru nebo identifikátor URI trezoru). Ostatní atributy umožňují řídit, ke kterému trezoru se připojit, ale jsou nezbytné pouze v případě, že aplikace není spuštěná v prostředí, se kterým pracuje Microsoft.Azure.Services.AppAuthentication. Knihovna ověřování služeb Azure se používá k automatickému vyzvednutí informací o připojení z spouštěcího prostředí, pokud je to možné. Automatické vyzvednutí informací o připojení můžete přepsat poskytnutím připojovací řetězec.

  • vaultName - Povinné, pokud uri není zadané. Určuje název trezoru ve vašem předplatném Azure, ze kterého se mají číst páry klíč/hodnota.
  • uri – Připojí se k dalším poskytovatelům služby Key Vault se zadanou uri hodnotou. Pokud není zadaný, Azure (vaultName) je zprostředkovatelem trezoru.
  • version – Azure Key Vault poskytuje funkci správy verzí tajných kódů. Pokud version je zadáno, tvůrce načte pouze tajné kódy odpovídající této verzi.
  • preloadSecretNames – Ve výchozím nastavení se tvůrce dotazuje na všechny názvy klíčů v trezoru klíčů při inicializaci. Chcete-li zabránit čtení všech hodnot klíče, nastavte tento atribut na false. Nastavením této funkce najednou false přečtete tajné kódy po jednom. Čtení tajných kódů po jednom může být užitečné, pokud trezor umožňuje přístup "Získat", ale ne přístup "Seznam". Poznámka: Při použití Greedy režimu preloadSecretNames musí být true (výchozí.)

KeyPerFileConfigBuilder

<add name="KeyPerFile"
    [mode|prefix|stripPrefix|tokenPattern]
    (directoryPath="PathToSourceDirectory")
    [ignorePrefix="ignore."]
    [keyDelimiter=":"]
    [optional="false"]
    type="Microsoft.Configuration.ConfigurationBuilders.KeyPerFileConfigBuilder,
    Microsoft.Configuration.ConfigurationBuilders.KeyPerFile" />

KeyPerFileConfigBuilder je základní tvůrce konfigurace, který používá soubory adresáře jako zdroj hodnot. Název souboru je klíč a obsah je hodnota. Tento tvůrce konfigurace může být užitečný při spuštění v orchestrovaném prostředí kontejneru. Systémy, jako je Docker Swarm a Kubernetes, poskytují secrets svým orchestrovaným kontejnerům Windows tímto způsobem klíč pro jednotlivé soubory.

Podrobnosti o atributu:

  • directoryPath -Požadovaný. Určuje cestu, ve které se mají hledat hodnoty. Tajné kódy Dockeru pro Windows jsou ve výchozím nastavení uložené v adresáři C:\ProgramData\Docker\secrets .
  • ignorePrefix – Soubory, které začínají touto předponou, jsou vyloučeny. Výchozí hodnota je "ignorovat".
  • keyDelimiter - Výchozí hodnota je null. Pokud je zadaný, tvůrce konfigurace prochází více úrovní adresáře a vytváří názvy klíčů s tímto oddělovačem. Pokud je nulltato hodnota, tvůrce konfigurace se podívá pouze na nejvyšší úroveň adresáře.
  • optional - Výchozí hodnota je false. Určuje, jestli má tvůrce konfigurace způsobit chyby, pokud zdrojový adresář neexistuje.

SimpleJsonConfigBuilder

Upozornění

Nikdy neukládejte hesla, citlivá připojovací řetězec ani jiná citlivá data ve zdrojovém kódu. Produkční tajné kódy by se neměly používat pro vývoj ani testování.

<add name="SimpleJson"
    [mode|prefix|stripPrefix|tokenPattern]
    jsonFile="~\config.json"
    [optional="true"]
    [jsonMode="(Flat|Sectional)"]
    type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder,
    Microsoft.Configuration.ConfigurationBuilders.Json" />

Projekty .NET Core často používají soubory JSON pro konfiguraci. Tvůrce SimpleJsonConfigBuilder umožňuje použití souborů JSON .NET Core v rozhraní .NET Framework. Tento tvůrce konfigurace poskytuje základní mapování ze zdroje plochého klíče nebo hodnoty do konkrétních oblastí klíč/hodnota konfigurace rozhraní .NET Framework. Tento tvůrce konfigurace neposkytuje hierarchické konfigurace. Záložní soubor JSON je podobný slovníku, nikoli komplexnímu hierarchickému objektu. Lze použít hierarchický soubor s více úrovněmi. Tento zprostředkovatel flattenje hloubku přidáním názvu vlastnosti na každé úrovni pomocí : oddělovače.

Podrobnosti o atributu:

  • jsonFile -Požadovaný. Určuje soubor JSON, ze který se má číst. Znak ~ lze použít na začátku a odkazovat na kořen aplikace.

  • optional - Logická hodnota, výchozí hodnota je true. Zabrání vyvolání výjimek v případě, že soubor JSON nebyl nalezen.

  • jsonMode - [Flat|Sectional]. Flat je výchozí možnost. Pokud jsonMode je Flat, soubor JSON je jedním zdrojem plochých klíč/hodnota. AzureKeyVaultConfigBuilder Jedná se EnvironmentConfigBuilder také o jeden plochý zdroj klíč/hodnota. SimpleJsonConfigBuilder Při konfiguraci v Sectional režimu:

    • Soubor JSON je koncepčně rozdělený na nejvyšší úroveň do několika slovníků.
    • Každý slovník se použije pouze v oddílu konfigurace, který odpovídá názvu vlastnosti nejvyšší úrovně, který je k nim připojen. Příklad:
    {
        "appSettings" : {
            "setting1" : "value1",
            "setting2" : "value2",
            "complex" : {
                "setting1" : "complex:value1",
                "setting2" : "complex:value2",
            }
        }
    }

Pořadí tvůrce konfigurací

Viz Pořadí provádění nástroje ConfigurationBuilders v úložišti aspnet/MicrosoftConfigurationBuilders GitHub.

Implementace vlastního tvůrce konfigurace klíče a hodnoty

Pokud tvůrci konfigurací nevyhovují vašim potřebám, můžete napsat vlastní. Základní KeyValueConfigBuilder třída zpracovává režimy nahrazení a většinu předpon. Implementace projektu potřebuje pouze:

using Microsoft.Configuration.ConfigurationBuilders;
using System.Collections.Generic;

public class MyCustomConfigBuilder : KeyValueConfigBuilder
{
    public override string GetValue(string key)
    {
        // Key lookup should be case-insensitive, because most key/value collections in 
        // .NET Framework config sections are case-insensitive.
        return "Value for given key, or null.";
    }

    public override ICollection<KeyValuePair<string, string>> GetAllValues(string prefix)
    {
        // Populate the return collection.
        return new Dictionary<string, string>() { { "one", "1" }, { "two", "2" } };
    }
}

Základní KeyValueConfigBuilder třída poskytuje většinu práce a konzistentního chování v tvůrcích konfigurace klíč/hodnota.

Další materiály