ASP.NET Core Blazor yapılandırması

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Bu makalede uygulama ayarları, kimlik doğrulaması ve günlüğe kaydetme yapılandırması dahil olmak üzere uygulamaların nasıl yapılandırılır Blazor açıklanmaktadır.

Bu kılavuz, bir veya tek başına Blazor WebAssembly bir uygulamadaki Blazor Web App istemci tarafı proje yapılandırması için geçerlidir.

s içindeki Blazor Web Appvarsayılan davranış:

  • Sunucu tarafı yapılandırması için:
    • Yönergeler için bkz . ASP.NET Core'da yapılandırma.
    • Yalnızca projenin kök uygulama ayarları dosyalarındaki yapılandırma yüklenir.
    • Bu makalenin geri kalanı yalnızca projedeki .Client istemci tarafı yapılandırması için geçerlidir.
  • İstemci tarafı yapılandırması (.Client proje) için yapılandırma aşağıdaki uygulama ayarları dosyalarından yüklenir:

Tek başına Blazor WebAssembly uygulamalarda yapılandırma aşağıdaki uygulama ayarları dosyalarından yüklenir:

Bu kılavuz barındırılan Blazor WebAssembly bir çözümün Client veya Blazor WebAssembly uygulamanın projesi için geçerlidir.

Barındırılan çözümün Server projesinde sunucu tarafı ASP.NET Core uygulama yapılandırması için bkz. ASP.NET Core'daBlazor WebAssembly yapılandırma.

İstemcide, yapılandırma aşağıdaki uygulama ayarları dosyalarından yüklenir:

Not

uygulamasındaki bir uygulama ayarları dosyasına wwwroot yerleştirilen günlük yapılandırması varsayılan olarak yüklenmez. Daha fazla bilgi için bu makalenin devamında yer alan Günlük yapılandırması bölümüne bakın.

Azure hizmetleri gibi bazı senaryolarda ortam adıyla tam olarak eşleşen bir ortam dosyası adı kesimi kullanmak önemlidir. Örneğin, ortam için Staging büyük "S" ile dosya adını appsettings.Staging.json kullanın. Önerilen kurallar için ASP.NET Core Blazor ortamlarının açılış açıklamalarına bakın.

Uygulama tarafından kaydedilen diğer yapılandırma sağlayıcıları da yapılandırma sağlayabilir, ancak tüm sağlayıcılar veya sağlayıcı özellikleri uygun değildir:

  • Azure Key Vault yapılandırma sağlayıcısı: Sağlayıcı, istemci gizli dizi senaryolarıyla yönetilen identity ve uygulama kimliği (istemci kimliği) için desteklenmez. İstemci gizli anahtarı Azure Key Vault hizmetine erişmek için istemci tarafı güvenliği sağlanamadığından, istemci tarafı uygulamalar başta olmak üzere ASP.NET Core uygulamaları için istemci gizli dizisine sahip uygulama kimliği önerilmez.
  • Azure Uygulaması yapılandırma sağlayıcısı: Uygulama Azure'daki bir sunucuda çalışmadığından sağlayıcı istemci tarafı uygulaması için uygun değildir.

Yapılandırma sağlayıcıları hakkında daha fazla bilgi için bkz . ASP.NET Core'da yapılandırma.

Uyarı

Web kökündeki (wwwroot klasör) yapılandırma ve ayarlar dosyaları istemcideki kullanıcılar tarafından görülebilir ve kullanıcılar verilerle oynanabilir. Uygulama gizli dizilerini, kimlik bilgilerini veya diğer hassas verileri herhangi bir web kök dosyasında depolamayın.

Uygulama ayarları yapılandırması

Uygulama ayarları dosyalarındaki yapılandırma varsayılan olarak yüklenir. Aşağıdaki örnekte kullanıcı arabirimi yapılandırma değeri bir uygulama ayarları dosyasında depolanır ve çerçeve tarafından Blazor otomatik olarak yüklenir. Değer bir bileşen tarafından okunur.

wwwroot/appsettings.json:

{
    "h1FontSize": "50px"
}

IConfiguration Yapılandırma verilerine erişmek için bir bileşene örnek ekleme.

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>

İstemci güvenlik kısıtlamaları, uygulama yapılandırması için ayarlar dosyaları dahil olmak üzere kullanıcı kodu aracılığıyla dosyalara doğrudan erişimi engeller. Klasörden yapılandırmaya ek olarak yapılandırma dosyalarını okumak için appsettings.json/appsettings.{ENVIRONMENT}.json kullanın.HttpClientwwwroot

Uyarı

Web kökündeki (wwwroot klasör) yapılandırma ve ayarlar dosyaları istemcideki kullanıcılar tarafından görülebilir ve kullanıcılar verilerle oynanabilir. Uygulama gizli dizilerini, kimlik bilgilerini veya diğer hassas verileri herhangi bir web kök dosyasında depolamayın.

Aşağıdaki örnek, uygulamanın yapılandırmasına bir yapılandırma dosyası (cars.json) okur.

wwwroot/cars.json:

{
    "size": "tiny"
}

ad alanını Microsoft.Extensions.Configuration Program dosyasına ekleyin:

using Microsoft.Extensions.Configuration;

Dosyayı okumak için istemciyi kullanmak için mevcut HttpClient hizmet kaydını değiştirin:

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);

Yukarıdaki örnek, uygulamanın temel adresini alan ve genellikle ana bilgisayar sayfasındaki etiketin href değerinden <base> türetilen temel adresi ()IWebAssemblyHostEnvironment.BaseAddress ile builder.HostEnvironment.BaseAddress ayarlar.

Bellek Yapılandırma Kaynağı

Aşağıdaki örnek, ek yapılandırma sağlamak için dosyasında bir MemoryConfigurationSource Program kullanır.

ad alanını Microsoft.Extensions.Configuration.Memory Program dosyasına ekleyin:

using Microsoft.Extensions.Configuration.Memory;

Program dosyasında:

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 Yapılandırma verilerine erişmek için bir bileşene örnek ekleme.

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>

ile IConfiguration.GetSectionC# kodunda yapılandırmanın bir bölümünü alın. Aşağıdaki örnek, önceki örnekteki yapılandırmanın bölümünü elde wheels eder:

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

        ...
    }
}

Kimlik doğrulama yapılandırması

Uygulama ayarları dosyasında genel kimlik doğrulama yapılandırması sağlayın.

wwwroot/appsettings.json:

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

dosyasında ile bir Identity sağlayıcının ConfigurationBinder.Bind Program yapılandırmasını yükleyin. Aşağıdaki örnek bir OIDC sağlayıcısının yapılandırmasını yükler:

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

Uyarı

Web kökündeki (wwwroot klasör) yapılandırma ve ayarlar dosyaları istemcideki kullanıcılar tarafından görülebilir ve kullanıcılar verilerle oynanabilir. Uygulama gizli dizilerini, kimlik bilgilerini veya diğer hassas verileri herhangi bir web kök dosyasında depolamayın.

Günlük yapılandırması

Bu bölüm, klasördeki bir uygulama ayarları dosyası aracılığıyla günlüğe kaydetmeyi wwwroot yapılandıran uygulamalar için geçerlidir.

Microsoft.Extensions.Logging.Configuration Paketi uygulamaya ekleyin.

Not

.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.

Uygulama ayarları dosyasında günlük yapılandırmasını sağlayın. Günlük yapılandırması dosyaya Program yüklenir.

wwwroot/appsettings.json:

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

Program dosyasında:

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

Konak oluşturucu yapılandırması

Dosyasından WebAssemblyHostBuilder.Configuration Program konak oluşturucu yapılandırmasını okuyun:

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

Önbelleğe alınmış yapılandırma

Yapılandırma dosyaları çevrimdışı kullanım için önbelleğe alınır. Aşamalı Web Uygulamaları (PWA) ile, yalnızca yeni bir dağıtım oluştururken yapılandırma dosyalarını güncelleştirebilirsiniz. Yapılandırma dosyalarını dağıtımlar arasında düzenlemenin hiçbir etkisi yoktur çünkü:

  • Kullanıcılar, kullanmaya devam ettikleri dosyaların sürümlerini önbelleğe almışlardır.
  • PWA'ların service-worker.js ve service-worker-assets.js dosyalarının, kullanıcının bir sonraki çevrimiçi ziyaretinde uygulamaya uygulamanın yeniden dağıtıldığını belirten derlemede yeniden oluşturulması gerekir.

Arka plan güncelleştirmelerinin PWA'lar tarafından nasıl işlenmeleri hakkında daha fazla bilgi için bkz . ASP.NET Core Blazor Progressive Web Application (PWA).

Seçenekler yapılandırması

Seçenekler yapılandırması , NuGet paketi için Microsoft.Extensions.Options.ConfigurationExtensions bir paket başvurusu eklemeyi gerektirir.

Not

.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.

Örnek:

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

ASP.NET Çekirdek Seçenekleri özelliklerinin tümü bileşenlerde Razor desteklenmez. Örneğin, IOptionsSnapshot<TOptions> yapılandırma IOptionsMonitor<TOptions> desteklenir, ancak bu arabirimler için seçenek değerlerini yeniden derleme, uygulamayı yeni bir tarayıcı sekmesinde isteyerek veya tarayıcının yeniden yükle düğmesini seçerek uygulamanın yeniden yüklenmesi dışında desteklenmez. Yalnızca çağrı StateHasChanged , temel alınan yapılandırma değiştiğinde anlık görüntü veya izlenen seçenek değerlerini güncelleştirmez.