ASP.NET Core Blazor konfigurációja
Jegyzet
Ez nem a cikk legújabb verziója. Az aktuális kiadás részleteiért lásd a jelen cikk .NET 9-es verzióját.
Figyelmeztetés
A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. Az aktuális kiadás részleteiért lásd a jelen cikk .NET 9-es verzióját.
Fontos
Ezek az információk egy olyan előzetes termékre vonatkoznak, amelyet a kereskedelmi forgalomba kerülés előtt jelentősen módosíthatnak. A Microsoft nem vállal kifejezett vagy hallgatólagos szavatosságot az itt megadott információkra vonatkozóan.
Az aktuális kiadás részleteiért lásd a jelen cikk .NET 9-es verzióját.
Ez a cikk bemutatja, hogyan konfigurálhat Blazor alkalmazásokat, beleértve az alkalmazásbeállításokat, a hitelesítést és a naplózási konfigurációt.
Ez az útmutató egy Blazor Web App vagy különálló Blazor WebAssembly alkalmazás ügyféloldali projektkonfigurációjára vonatkozik.
Az Blazor Web Appalapértelmezett viselkedése:
- Kiszolgálóoldali konfiguráció esetén:
- Útmutatásért tekintse meg ASP.NET Core konfigurációját.
- A rendszer csak a projekt gyökéralkalmazás-beállításfájljainak konfigurációját tölti be.
- A cikk további része csak a
.Client
projekt ügyféloldali konfigurációjára vonatkozik.
- Az ügyféloldali konfiguráció (
.Client
projekt) esetében a konfiguráció a következő alkalmazásbeállítások fájljaiból töltődik be:-
wwwroot/appsettings.json
. -
wwwroot/appsettings.{ENVIRONMENT}.json
, ahol a{ENVIRONMENT}
helyőrző az alkalmazás futtatókörnyezete.
-
A különálló Blazor WebAssembly alkalmazásokban a konfiguráció a következő alkalmazásbeállítások fájljaiból töltődik be:
-
wwwroot/appsettings.json
. -
wwwroot/appsettings.{ENVIRONMENT}.json
, ahol a{ENVIRONMENT}
helyőrző az alkalmazás futtatókörnyezete.
Ez az útmutató egy üzemeltetett Client
-megoldás vagy Blazor WebAssembly-alkalmazás Blazor WebAssembly projektére vonatkozik.
Egy üzemeltetett Server
-megoldás Blazor WebAssembly projektjének kiszolgálóoldali ASP.NET Core-alkalmazáskonfigurációját lásd: ASP.NET Corekonfigurációja.
Az ügyfélen a konfiguráció a következő alkalmazásbeállítások fájljaiból töltődik be:
-
wwwroot/appsettings.json
. -
wwwroot/appsettings.{ENVIRONMENT}.json
, ahol a{ENVIRONMENT}
helyőrző az alkalmazás futtatókörnyezete.
Jegyzet
A wwwroot
alkalmazásbeállítási fájlba helyezett naplózási konfiguráció alapértelmezés szerint nincs betöltve. További információt a cikk későbbi, naplózási konfigurációs szakaszában talál.
Bizonyos esetekben, például az Azure-szolgáltatások esetében fontos, hogy a környezeti fájlnévszegmens pontosan egyezzen a környezet nevével. Például használja a appsettings.Staging.json
fájlnevet a S környezetben egy nagybetűs "Staging
" használatával. Az ajánlott konvenciókért tekintse meg ASP.NET Core Blazor környezeteknyitó megjegyzéseit.
Az alkalmazás által regisztrált más konfigurációs szolgáltatók is megadhatnak konfigurációt, de nem minden szolgáltató vagy szolgáltatói funkció megfelelő:
- hu-HU: Azure Key Vault konfigurációszolgáltató: A szolgáltató nem támogatott felügyelt identitás és ügyfélazonosító (ügyfélazonosító) felhasználása esetén ügyféltitokkal kapcsolatos forgatókönyvekben. Az ügyfélkóddal rendelkező alkalmazásazonosító nem ajánlott ASP.NET Core-alkalmazásokhoz, különösen az ügyféloldali alkalmazásokhoz, mivel az ügyfélkulcs nem védhető ügyféloldali védelemmel az Azure Key Vault szolgáltatás eléréséhez.
- Azure-alkalmazáskonfigurációs szolgáltató: A szolgáltató nem megfelelő ügyféloldali alkalmazásokhoz, mert az alkalmazás nem fut az Azure-beli kiszolgálón.
További információ a konfigurációszolgáltatókról: Configuration in ASP.NET Core.
Figyelmeztetés
A webgyökér konfigurációs és beállításfájljai (wwwroot
mappa) láthatók az ügyfél felhasználói számára, és a felhasználók módosíthatják az adatokat.
Ne tároljon alkalmazáskulcsokat, hitelesítő adatokat vagy más bizalmas adatokat egyetlen webes gyökérfájlban sem.
Alkalmazásbeállítások konfigurálása
Az alkalmazásbeállítások fájljainak konfigurációja alapértelmezés szerint betöltődik. Az alábbi példában a felhasználói felület konfigurációs értékét egy alkalmazásbeállítási fájl tárolja, és a Blazor keretrendszer automatikusan betölti. Az értéket egy összetevő olvassa be.
wwwroot/appsettings.json
:
{
"h1FontSize": "50px"
}
Szúrjon be egy IConfiguration-példányt egy összetevőbe a konfigurációs adatok eléréséhez.
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>
Az ügyfélbiztonsági korlátozások megakadályozzák a fájlok felhasználói kódon keresztüli közvetlen elérését, beleértve az alkalmazáskonfiguráció beállításfájljait is. Annak érdekében, hogy a konfigurációs fájlokat a appsettings.json
mappából beolvassa a /appsettings.{ENVIRONMENT}.json
wwwroot
konfigurációba, használjon HttpClient.
Figyelmeztetés
A webgyökér konfigurációs és beállításfájljai (wwwroot
mappa) láthatók az ügyfél felhasználói számára, és a felhasználók módosíthatják az adatokat.
Ne tároljon alkalmazáskulcsokat, hitelesítő adatokat vagy más bizalmas adatokat egyetlen webes gyökérfájlban sem.
Az alábbi példa egy konfigurációs fájlt (cars.json
) olvas be az alkalmazás konfigurációjába.
wwwroot/cars.json
:
{
"size": "tiny"
}
Adja hozzá a Microsoft.Extensions.Configuration névterét a Program
fájlhoz:
using Microsoft.Extensions.Configuration;
Módosítsa a meglévő HttpClient szolgáltatásregisztrációt úgy, hogy az ügyfélen keresztül olvassa be a fájlt.
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);
Az előző példa az alapcímet builder.HostEnvironment.BaseAddress
(IWebAssemblyHostEnvironment.BaseAddress) értékre állítja, amely az alkalmazás alapcímét kapja meg, és általában a gazdagépoldal <base>
tag href
értékéből származik.
Memóriakonfiguráció forrása
Az alábbi példa egy MemoryConfigurationSource-t használ a Program
fájlban a további konfiguráció megadásához.
Adja hozzá a Microsoft.Extensions.Configuration.Memory névterét a Program
fájlhoz:
using Microsoft.Extensions.Configuration.Memory;
A Program
fájlban:
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);
Szúrjon be egy IConfiguration-példányt egy összetevőbe a konfigurációs adatok eléréséhez.
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>
A konfiguráció egy szakaszának lekérése C# kódban IConfiguration.GetSection. Az alábbi példa lekéri az előző példában szereplő konfiguráció wheels
szakaszát.
@code {
protected override void OnInitialized()
{
var wheelsSection = Configuration.GetSection("wheels");
...
}
}
Hitelesítési konfiguráció
Adjon meg nyilvános hitelesítési konfigurációt egy alkalmazásbeállítási fájlban.
wwwroot/appsettings.json
:
{
"Local": {
"Authority": "{AUTHORITY}",
"ClientId": "{CLIENT ID}"
}
}
Töltse be a Identity fájlban található ConfigurationBinder.BindProgram
-szolgáltató konfigurációját. Az alábbi példa betölti egy OIDC-szolgáltató konfigurációját:
builder.Services.AddOidcAuthentication(options =>
builder.Configuration.Bind("Local", options.ProviderOptions));
Figyelmeztetés
A webgyökér konfigurációs és beállításfájljai (wwwroot
mappa) láthatók az ügyfél felhasználói számára, és a felhasználók módosíthatják az adatokat.
Ne tároljon alkalmazáskulcsokat, hitelesítő adatokat vagy más bizalmas adatokat egyetlen webes gyökérfájlban sem.
Naplózási konfiguráció
Ez a szakasz azokra az alkalmazásokra vonatkozik, amelyek a naplózást az wwwroot
mappában lévő alkalmazásbeállítás-fájlon keresztül konfigurálják.
Adja hozzá a Microsoft.Extensions.Logging.Configuration
csomagot az alkalmazáshoz.
Jegyzet
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Az alkalmazásbeállítások fájljában adja meg a naplózási konfigurációt. A naplózási konfiguráció betöltődik a Program
fájlba.
wwwroot/appsettings.json
:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
A Program
fájlban:
builder.Logging.AddConfiguration(
builder.Configuration.GetSection("Logging"));
Host építő konfigurációja
Olvassa el a hosztépítő konfigurációját a WebAssemblyHostBuilder.Configuration a Program
fájlban:
var hostname = builder.Configuration["HostName"];
Gyorsítótárazott konfiguráció
A konfigurációs fájlok offline használatra gyorsítótárazva vannak. A progresszív webalkalmazások (PWA-k)segítségével csak új üzembe helyezés létrehozásakor frissítheti a konfigurációs fájlokat. A konfigurációs fájlok központi telepítések közötti szerkesztésének nincs hatása, mert:
- A felhasználók gyorsítótárazott fájlverziókkal rendelkeznek, amelyeket továbbra is használnak.
- A PWA
service-worker.js
ésservice-worker-assets.js
fájljait fordításkor újra kell létrehozni, amely jelzi az alkalmazásnak a felhasználó következő online látogatásán, hogy az alkalmazás újra üzembe lett állítva.
A háttérfrissítések pwa-k általi kezelésével kapcsolatos további információkért lásd ASP.NET Core Blazor Progressive Web Application (PWA).
Beállítások konfigurálása
Beállítások konfigurációja igényli a Microsoft.Extensions.Options.ConfigurationExtensions
NuGet-csomag csomaghivatkozásának hozzáadását.
Jegyzet
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Példa:
OptionsExample.cs
:
public class OptionsExample
{
public string? Option1 { get; set; }
public string? Option2 { get; set; }
}
A appsettings.json
:
"OptionsExample": {
"Option1": "Option1 Value",
"Option2": "Option2 Value"
}
builder.Services.Configure<OptionsExample>(
builder.Configuration.GetSection("OptionsExample"));
Az alábbi Razor komponens lekéri a beállításokat a @inject
irányelvvel vagy [Inject]
attribútummal.
Options.razor
:
@page "/options"
@using Microsoft.Extensions.Options
@inject IOptions<OptionsExample>? OptionsExample1
<h1>Options</h1>
<h2>
@inject approach
</h2>
<ul>
<li>@OptionsExample1?.Value.Option1</li>
<li>@OptionsExample1?.Value.Option2</li>
</ul>
<h2>
[Inject] approach
</h2>
<ul>
<li>@OptionsExample2?.Value.Option1</li>
<li>@OptionsExample2?.Value.Option2</li>
</ul>
@code {
[Inject]
public IOptions<OptionsExample>? OptionsExample2 { get; set; }
}
Az Razor összetevők nem támogatják az ASP.NET alapvető beállításokat. Például a IOptionsSnapshot<TOptions> és a IOptionsMonitor<TOptions> konfigurációk támogatottak, de az interakciós beállítások újraszámítása nem támogatott, kivéve ha az alkalmazást újratöltik, új böngészőlapban kérik le, vagy a böngésző újratöltés gombját választják. Pusztán a StateHasChanged
hívása nem frissíti a pillanatkép- és a figyelt beállításértékeket, ha az alapértelmezett konfiguráció megváltozik.