ASP.NET Core Blazor yapılandırması
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.
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:wwwroot/appsettings.json
.wwwroot/appsettings.{ENVIRONMENT}.json
, burada{ENVIRONMENT}
yer tutucu uygulamanın çalışma zamanı ortamıdır.
Tek başına Blazor WebAssembly uygulamalarda yapılandırma aşağıdaki uygulama ayarları dosyalarından yüklenir:
wwwroot/appsettings.json
.wwwroot/appsettings.{ENVIRONMENT}.json
, burada{ENVIRONMENT}
yer tutucu uygulamanın çalışma zamanı ortamıdır.
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:
wwwroot/appsettings.json
.wwwroot/appsettings.{ENVIRONMENT}.json
, burada{ENVIRONMENT}
yer tutucu uygulamanın çalışma zamanı ortamıdır.
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
veservice-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.
ASP.NET Core