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.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. 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 v Blazor Web App samostatné aplikaci nebo v samostatné Blazor WebAssembly aplikaci.
Výchozí chování ve Blazor Web Apps:
- Pro konfiguraci na straně serveru:
- Pokyny najdete v tématu Konfigurace v ASP.NET Core .
- Načte se pouze 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 konfigurace načte 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 konfigurace načte 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 konfigurace načte 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: Poskytovatel není podporovaný pro spravované identity 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 aplikaci na straně klienta, protože aplikace není spuštěná 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
<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.json
wwwroot
/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.Configuration Program
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.Memory Program
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
<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.Bind Program
. 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 PWAservice-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.