konfigurace ASP.NET Core Blazor

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Tento článek vysvětluje, jak nakonfigurovat Blazor aplikace, včetně nastavení aplikace, ověřování a konfigurace protokolování.

Tyto pokyny platí pro konfiguraci projektu na straně klienta ve Blazor webové aplikaci nebo samostatné Blazor WebAssembly aplikaci.

Ve Blazor Službě Web Apps:

  • Pro konfiguraci na straně serveru:
    • Pokyny najdete v tématu Konfigurace v ASP.NET Core .
    • Ve výchozím nastavení se načtou jenom konfigurace v souborech nastavení kořenové aplikace projektu.
    • Zbývající část tohoto článku se týká pouze konfigurace na straně klienta v .Client projektu.
  • Pro konfiguraci na straně klienta (.Client projekt) se ve výchozím nastavení načte konfigurace z následujících souborů nastavení aplikace:
    • wwwroot/appsettings.json.
    • wwwroot/appsettings.{ENVIRONMENT}.json, kde {ENVIRONMENT} zástupný symbol je prostředí modulu runtime aplikace.

V samostatných Blazor WebAssembly aplikacích se ve výchozím nastavení načte konfigurace z následujících souborů nastavení aplikace:

  • wwwroot/appsettings.json.
  • wwwroot/appsettings.{ENVIRONMENT}.json, kde {ENVIRONMENT} zástupný symbol je prostředí modulu runtime aplikace.

Tyto pokyny platí pro Client projekt hostovaného Blazor WebAssembly řešení nebo Blazor WebAssembly aplikace.

Informace o konfiguraci aplikace ASP.NET Core na straně serveru v Server projektu hostovaného Blazor WebAssembly řešení najdete v tématu Konfigurace v ASP.NET Core.

V klientovi se ve výchozím nastavení načte konfigurace z následujících souborů nastavení aplikace:

  • wwwroot/appsettings.json.
  • wwwroot/appsettings.{ENVIRONMENT}.json, kde {ENVIRONMENT} zástupný symbol je prostředí modulu runtime aplikace.

Poznámka:

Konfigurace protokolování umístěná do souboru wwwroot nastavení aplikace není ve výchozím nastavení načtena. Další informace najdete v části Konfigurace protokolování dále v tomto článku.

V některých scénářích, jako jsou služby Azure, je důležité použít segment názvu souboru prostředí, který přesně odpovídá názvu prostředí. Použijte například název appsettings.Staging.json souboru s velkým písmenem "S" pro Staging prostředí. Doporučené konvence najdete v úvodních poznámkách k prostředím ASP.NET CoreBlazor.

Ostatní poskytovatelé konfigurace zaregistrovaní aplikací můžou také poskytovat konfiguraci, ale ne všechny poskytovatele nebo funkce poskytovatele jsou vhodné:

  • Zprostředkovatel konfigurace služby Azure Key Vault: Zprostředkovatel není podporován pro spravované identity a ID aplikace (ID klienta) ve scénářích tajných klíčů klienta. ID aplikace s tajným kódem klienta se nedoporučuje pro žádnou aplikaci ASP.NET Core, zejména pro aplikace na straně klienta, protože tajný klíč klienta nemůže být zabezpečený pro přístup ke službě Azure Key Vault.
  • Aplikace Azure poskytovatele konfigurace: Poskytovatel není vhodný pro aplikace na straně klienta, protože neběží na serveru v Azure.

Další informace o poskytovatelích konfigurace najdete v tématu Konfigurace v ASP.NET Core.

Upozorňující

Soubory konfigurace a nastavení ve webovém kořenovém adresáři (wwwroot složce) jsou viditelné pro uživatele v klientovi a uživatelé můžou manipulovat s daty. Neukládejte tajné kódy aplikací, přihlašovací údaje ani žádná jiná citlivá data v žádném kořenovém souboru webu.

Konfigurace nastavení aplikace

Konfigurace v souborech nastavení aplikace se ve výchozím nastavení načte. V následujícím příkladu je hodnota konfigurace uživatelského rozhraní uložena v souboru nastavení aplikace a načtena rozhraním Blazor automaticky. Hodnota je přečtená komponentou.

wwwroot/appsettings.json:

{
    "h1FontSize": "50px"
}

IConfiguration Vložte instanci do komponenty pro přístup ke konfiguračním datům.

ConfigExample.razor:

@page "/config-example"
@inject IConfiguration Configuration

<PageTitle>Configuration</PageTitle>

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example (50px)
</h1>
@page "/config-example"
@inject IConfiguration Configuration

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example
</h1>
@page "/config-example"
@inject IConfiguration Configuration

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example
</h1>
@page "/config-example"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example
</h1>
@page "/config-example"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example
</h1>

Omezení zabezpečení klienta brání přímému přístupu k souborům prostřednictvím uživatelského kódu, včetně souborů nastavení pro konfiguraci aplikace. Ke čtení konfiguračních souborů kromě appsettings.jsonwwwroot/appsettings.{ENVIRONMENT}.json složky do konfigurace použijte příkaz .HttpClient

Upozorňující

Soubory konfigurace a nastavení ve webovém kořenovém adresáři (wwwroot složce) jsou viditelné pro uživatele v klientovi a uživatelé můžou manipulovat s daty. Neukládejte tajné kódy aplikací, přihlašovací údaje ani žádná jiná citlivá data v žádném kořenovém souboru webu.

Následující příklad načte konfigurační soubor (cars.json) do konfigurace aplikace.

wwwroot/cars.json:

{
    "size": "tiny"
}

Přidejte obor názvů pro Microsoft.Extensions.ConfigurationProgram soubor:

using Microsoft.Extensions.Configuration;

Upravte stávající HttpClient registraci služby tak, aby používala klienta ke čtení souboru:

var http = new HttpClient()
{
    BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
};

builder.Services.AddScoped(sp => http);

using var response = await http.GetAsync("cars.json");
using var stream = await response.Content.ReadAsStreamAsync();

builder.Configuration.AddJsonStream(stream);

Předchozí příklad nastaví základní adresu na builder.HostEnvironment.BaseAddress (IWebAssemblyHostEnvironment.BaseAddress), která získá základní adresu aplikace a obvykle se odvozuje od <base> hodnoty značky href na stránce hostitele.

Zdroj konfigurace paměti

Následující příklad používá MemoryConfigurationSource v Program souboru další konfiguraci.

Přidejte obor názvů pro Microsoft.Extensions.Configuration.MemoryProgram soubor:

using Microsoft.Extensions.Configuration.Memory;

V souboru Program:

var vehicleData = new Dictionary<string, string?>()
{
    { "color", "blue" },
    { "type", "car" },
    { "wheels:count", "3" },
    { "wheels:brand", "Blazin" },
    { "wheels:brand:type", "rally" },
    { "wheels:year", "2008" },
};

var memoryConfig = new MemoryConfigurationSource { InitialData = vehicleData };

builder.Configuration.Add(memoryConfig);

IConfiguration Vložte instanci do komponenty pro přístup ke konfiguračním datům.

MemoryConfig.razor:

@page "/memory-config"
@inject IConfiguration Configuration

<PageTitle>Memory Configuration</PageTitle>

<h1>Memory Configuration Example</h1>

<h2>General specifications</h2>

<ul>
    <li>Color: @Configuration["color"]</li>
    <li>Type: @Configuration["type"]</li>
</ul>

<h2>Wheels</h2>

<ul>
    <li>Count: @Configuration["wheels:count"]</li>
    <li>Brand: @Configuration["wheels:brand"]</li>
    <li>Type: @Configuration["wheels:brand:type"]</li>
    <li>Year: @Configuration["wheels:year"]</li>
</ul>
@page "/memory-config"
@inject IConfiguration Configuration

<h1>Memory configuration example</h1>

<h2>General specifications</h2>

<ul>
    <li>Color: @Configuration["color"]</li>
    <li>Type: @Configuration["type"]</li>
</ul>

<h2>Wheels</h2>

<ul>
    <li>Count: @Configuration["wheels:count"]</li>
    <li>Brand: @Configuration["wheels:brand"]</li>
    <li>Type: @Configuration["wheels:brand:type"]</li>
    <li>Year: @Configuration["wheels:year"]</li>
</ul>
@page "/memory-config"
@inject IConfiguration Configuration

<h1>Memory configuration example</h1>

<h2>General specifications</h2>

<ul>
    <li>Color: @Configuration["color"]</li>
    <li>Type: @Configuration["type"]</li>
</ul>

<h2>Wheels</h2>

<ul>
    <li>Count: @Configuration["wheels:count"]</li>
    <li>Brand: @Configuration["wheels:brand"]</li>
    <li>Type: @Configuration["wheels:brand:type"]</li>
    <li>Year: @Configuration["wheels:year"]</li>
</ul>
@page "/memory-config"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1>Memory configuration example</h1>

<h2>General specifications</h2>

<ul>
    <li>Color: @Configuration["color"]</li>
    <li>Type: @Configuration["type"]</li>
</ul>

<h2>Wheels</h2>

<ul>
    <li>Count: @Configuration["wheels:count"]</li>
    <li>Brand: @Configuration["wheels:brand"]</li>
    <li>Type: @Configuration["wheels:brand:type"]</li>
    <li>Year: @Configuration["wheels:year"]</li>
</ul>
@page "/memory-config"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1>Memory configuration example</h1>

<h2>General specifications</h2>

<ul>
    <li>Color: @Configuration["color"]</li>
    <li>Type: @Configuration["type"]</li>
</ul>

<h2>Wheels</h2>

<ul>
    <li>Count: @Configuration["wheels:count"]</li>
    <li>Brand: @Configuration["wheels:brand"]</li>
    <li>Type: @Configuration["wheels:brand:type"]</li>
    <li>Year: @Configuration["wheels:year"]</li>
</ul>

Získejte část konfigurace v kódu jazyka C# pomocí IConfiguration.GetSection. Následující příklad získá wheels oddíl pro konfiguraci v předchozím příkladu:

@code {
    protected override void OnInitialized()
    {
        var wheelsSection = Configuration.GetSection("wheels");

        ...
    }
}

Konfigurace ověřování

Zadejte konfiguraci veřejného ověřování v souboru nastavení aplikace.

wwwroot/appsettings.json:

{
  "Local": {
    "Authority": "{AUTHORITY}",
    "ClientId": "{CLIENT ID}"
  }
}

Načtěte konfiguraci zprostředkovatele Identity se souborem ConfigurationBinder.BindProgram . Následující příklad načte konfiguraci pro zprostředkovatele OIDC:

builder.Services.AddOidcAuthentication(options =>
    builder.Configuration.Bind("Local", options.ProviderOptions));

Upozorňující

Soubory konfigurace a nastavení ve webovém kořenovém adresáři (wwwroot složce) jsou viditelné pro uživatele v klientovi a uživatelé můžou manipulovat s daty. Neukládejte tajné kódy aplikací, přihlašovací údaje ani žádná jiná citlivá data v žádném kořenovém souboru webu.

Konfigurace protokolování

Tato část se týká aplikací, které konfiguruje protokolování prostřednictvím souboru nastavení aplikace ve wwwroot složce.

Přidejte balíček Microsoft.Extensions.Logging.Configuration do aplikace.

Poznámka:

Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.

V souboru nastavení aplikace zadejte konfiguraci protokolování. Konfigurace protokolování se načte do Program souboru.

wwwroot/appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

V souboru Program:

builder.Logging.AddConfiguration(
    builder.Configuration.GetSection("Logging"));

Konfigurace tvůrce hostitelů

Čtení konfigurace tvůrce hostitelů Program ze WebAssemblyHostBuilder.Configuration souboru:

var hostname = builder.Configuration["HostName"];

Konfigurace uložená v mezipaměti

Konfigurační soubory se ukládají do mezipaměti pro offline použití. Pomocí progresivních webových aplikací (PWA) můžete aktualizovat pouze konfigurační soubory při vytváření nového nasazení. Úpravy konfiguračních souborů mezi nasazeními nemají žádný vliv, protože:

  • Uživatelé mají verze souborů uložených v mezipaměti, které nadále používají.
  • Soubory a service-worker-assets.js soubory PWA service-worker.js musí být znovu sestaveny při kompilaci, což signalizují aplikaci na příští online návštěvě uživatele, že byla aplikace znovu nasazena.

Další informace o tom, jak se aktualizace na pozadí zpracovávají pomocí PWA, najdete v tématu ASP.NET Základní Blazor progresivní webová aplikace (PWA).

Konfigurace možností

Konfigurace možností vyžaduje přidání odkazu na Microsoft.Extensions.Options.ConfigurationExtensions balíček NuGet.

Poznámka:

Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.

Příklad:

builder.Services.Configure<MyOptions>(
    builder.Configuration.GetSection("MyOptions"));

V komponentách nejsou podporované Razor všechny funkce ASP.NET Základních možností. Například IOptionsSnapshot<TOptions> a IOptionsMonitor<TOptions> konfigurace je podporovaná, ale opětovné dokončování hodnot možností pro tato rozhraní není podporováno mimo opětovné načtení aplikace buď vyžádáním aplikace na nové kartě prohlížeče, nebo výběrem tlačítka pro opětovné načtení prohlížeče. Pouhé volání StateHasChanged neaktualizuje hodnoty snímků ani monitorovaných možností, když se změní základní konfigurace.