Megosztás a következőn keresztül:


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}.jsonwwwroot 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 és service-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>
    &commat;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.