ASP.NET Core Blazor ortamları
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, bir Blazor uygulamada ortamı yapılandırma ve okuma açıklanmaktadır.
Bir uygulamayı yerel olarak çalıştırırken, ortam varsayılan olarak şeklindedir Development
. Uygulama yayımlandığında, ortam varsayılan olarak olarak Production
ayarlanır.
Aşağıdaki kuralları öneririz:
Yerel geliştirme için her zaman "
Development
" ortam adını kullanın. Bunun nedeni, ASP.NET Core çerçevesinin uygulamayı yapılandırırken tam olarak bu adı beklemesi ve bir uygulamanın yerel geliştirme çalıştırmaları için araçlara sahip olmasıdır.Test, hazırlama ve üretim ortamları için uygulamayı her zaman yayımlayın ve dağıtın. Yayımlanan uygulamalar için istediğiniz ortam adlandırma düzenini kullanabilirsiniz, ancak her zaman ortam adıyla tam olarak eşleşen ortam kesiminin büyük/küçük harflerini içeren uygulama ayarı dosya adlarını kullanabilirsiniz. Hazırlama için ortam adı olarak "
Staging
" (büyük "S") kullanın ve uygulama ayarları dosyasını eşleşecek (appsettings.Staging.json
) olarak adlandırın. Üretim için ortam adı olarak "Production
" (büyük "P") kullanın ve uygulama ayarları dosyasını eşleşecek (appsettings.Production.json
) olarak adlandırın.
Ortamı ayarlama
Ortam aşağıdaki yaklaşımlardan herhangi biri kullanılarak ayarlanır:
- Blazor Web App: Genel ASP.NET Core uygulamaları için ASP.NET Core'da birden çok ortam kullanma başlığı altında açıklanan yaklaşımlardan herhangi birini kullanın.
- Blazor Web App veya tek başına Blazor WebAssembly: Blazor yapılandırmayı başlatma
- Tek başına Blazor WebAssembly:
blazor-environment
üst bilgi - Blazor Web Appveya tek başına Blazor WebAssembly: Azure Uygulaması Hizmeti
için istemcisinde Blazor Web Apportam, adlı blazor-environment
bir üst bilgi aracılığıyla ortamı tarayıcıya ileten bir ara yazılım aracılığıyla sunucudan belirlenir. üst bilgisi, istemci tarafı Program
dosyasında (WebAssemblyHostBuilder.CreateDefault) oluşturulduğunda ortamı WebAssemblyHost ayarlar.
Ortam aşağıdaki yaklaşımlardan herhangi biri kullanılarak ayarlanır:
- Blazor Server: Genel ASP.NET Core uygulamaları için ASP.NET Core'da birden çok ortam kullanma başlığı altında açıklanan yaklaşımlardan herhangi birini kullanın.
- Blazor Server veya Blazor WebAssembly: Blazor yapılandırmayı başlat
- Blazor WebAssembly:
blazor-environment
üst bilgi - Blazor Serverveya Blazor WebAssembly: Azure Uygulaması Hizmeti
Barındırılan Blazor WebAssembly bir Blazor Web App uygulamanın veya istemcinin istemcisinde ortam, adlı blazor-environment
bir üst bilgi aracılığıyla ortamı tarayıcıya ileten bir ara yazılım aracılığıyla sunucudan belirlenir. üst bilgisi, istemci tarafı Program
dosyasında (WebAssemblyHostBuilder.CreateDefault) oluşturulduğunda ortamı WebAssemblyHost ayarlar.
Yerel olarak çalışan tek başına Blazor WebAssembly bir uygulama için geliştirme sunucusu üst bilgiyi ekler blazor-environment
.
Uygulamanın yerel olarak geliştirme aşamasında çalışması için, uygulama varsayılan olarak ortamı kullanır Development
. Uygulamayı yayımlamak, ortamı varsayılan olarak olarak Production
kullanır.
ASP.NET Core uygulama yapılandırması hakkında genel yönergeler için bkz . ASP.NET Core'da birden çok ortam kullanma. Geliştirme ve test sırasında ortamın Development dışındaki ortamlarda statik dosyalar içeren sunucu tarafı uygulama yapılandırması için (örneğin, Staging) bkz . ASP.NET Temel Blazor statik dosyalar.
Başlangıç yapılandırması aracılığıyla Blazor istemci tarafı ortamını ayarlama
Konak adı içeriyorsalocalhost
, aşağıdaki örnek ortamda başlar.Blazor Staging
Aksi takdirde ortam varsayılan değerine ayarlanır.
Blazor Web App:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
webAssembly: {
environment: "Staging"
}
});
} else {
Blazor.start();
}
</script>
Yukarıdaki örnekte, {BLAZOR SCRIPT}
yer tutucu betik yolu ve dosya adıdır Blazor . Betiğin konumu için bkz . ASP.NET Core Blazor proje yapısı.
Not
Özelliği yapılandırmada Blazor.start
ayarlayanlar>webAssembly
environment
içinBlazor Web App, sunucu tarafı ortamını özelliğinde ayarlanan ortamla eşleştirmek environment
akıllıca olacaktır. Aksi takdirde, sunucuda ön kayıt istemcide işlemeden farklı bir ortamda çalışır ve bu da rastgele etkilere neden olur. ortamını Blazor Web Appayarlama hakkında genel yönergeler için bkz . ASP.NET Core'da birden çok ortam kullanma.
Tek başına Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
Yukarıdaki örnekte, {BLAZOR SCRIPT}
yer tutucu betik yolu ve dosya adıdır Blazor . Betiğin konumu için bkz . ASP.NET Core Blazor proje yapısı.
özelliğinin environment
kullanılması, üst bilgi tarafından blazor-environment
ayarlanan ortamı geçersiz kılar.
Yukarıdaki yaklaşım, üst bilginin değerini değiştirmeden istemcinin blazor-environment
ortamını ayarlar ve genel Interactive WebAssembly işlemesini benimsemiş bir Blazor Web App için sunucu projesinin başlangıç ortamının konsol günlüğünü değiştirmez.
Ortamı tek başına Blazor WebAssembly bir projede veya .Client
bir Blazor Web Appprojesinde konsolda günlüğe kaydetmek için, aşağıdaki C# kodunuProgram
, ile oluşturulduktan WebAssemblyHostBuilder.CreateDefault sonra WebAssemblyHost ve projeyi derleyen ve çalıştıran satırdan önce dosyaya yerleştirin (await builder.Build().RunAsync();
):
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Blazor'ı başlatma hakkında daha fazla bilgi için bkz. ASP.NET Core Blazor'ı başlatma.
üst bilgi aracılığıyla istemci tarafı ortamını ayarlama
Blazor WebAssembly uygulamalar, üst bilgiyle blazor-environment
ortamı ayarlayabilir.
Aşağıdaki IIS örneğinde, yayımlanan web.config
dosyaya özel üst bilgi (blazor-environment
) eklenir. Dosya web.config
, yer tutucunun bin/Release/{TARGET FRAMEWORK}/publish
{TARGET FRAMEWORK}
hedef çerçeve olduğu klasörde bulunur:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="blazor-environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Not
Uygulama klasörde yayımlandığında publish
üzerine yazılmamış iis için özel web.config
bir dosya kullanmak için bkz. ASP.NET Core'u Blazor WebAssemblybarındırma ve dağıtma.
Çerçeve, üst bilgi adını tüm küçük harflerle ()blazor-environment
yazsa Blazor da, istediğiniz büyük/küçük harflerden birini kullanabilirsiniz. Örneğin, her sözcüğü (Blazor-Environment
) büyük harfe çevirir bir üst bilgi adı desteklenir.
Azure Uygulaması Hizmeti için ortamı ayarlama
Tek başına Blazor WebAssembly bir uygulama için, başlatma yapılandırması veya blazor-environment
üst bilgi aracılığıyla ortamı el ile ayarlayabilirsiniz.
Sunucu tarafı bir uygulama için, Azure'da bir ASPNETCORE_ENVIRONMENT
uygulama ayarı aracılığıyla ortamı ayarlayın:
Uygulama ayarları dosya adlarındaki ortam kesimlerinin büyük/küçük harfle çevrelerinin ortam adı büyük/küçük harfleriyle tam olarak eşleşdiğini onaylayın. Örneğin, ortamın eşleşen uygulama ayarları dosya adı
Staging
şeklindedirappsettings.Staging.json
. Dosya adıappsettings.staging.json
("küçük harfs
" ise), dosya bulunmaz ve dosyadaki ayarlar ortamdaStaging
kullanılmaz.Visual Studio dağıtımı için uygulamanın doğru dağıtım yuvasına dağıtıldığını onaylayın. adlı
BlazorAzureAppSample
bir uygulama için uygulama dağıtım yuvasınaStaging
dağıtılır.Ortamın dağıtım yuvası için Azure portalında ortamı uygulama ayarıyla
ASPNETCORE_ENVIRONMENT
ayarlayın. adlıBlazorAzureAppSample
bir uygulama için hazırlama App Service Yuvası olarak adlandırılırBlazorAzureAppSample/Staging
. YuvanınStaging
yapılandırması içinASPNETCORE_ENVIRONMENT
değerineStaging
sahip bir uygulama ayarı oluşturun. Dağıtım yuvası ayarı, ayar için etkinleştirilir.
Tarayıcıda istendiğinde, BlazorAzureAppSample/Staging
uygulama konumundaki Staging
https://blazorazureappsample-staging.azurewebsites.net
ortama yüklenir.
Uygulama tarayıcıda yüklendiğinde, için blazor.boot.json
yanıt üst bilgisi koleksiyonu üst bilgi değerinin blazor-environment
olduğunu Staging
gösterir.
Dosyadaki appsettings.{ENVIRONMENT}.json
uygulama ayarları, yer tutucunun uygulamanın ortamı olduğu {ENVIRONMENT}
uygulama tarafından yüklenir. Yukarıdaki örnekte, dosyadaki appsettings.Staging.json
ayarlar yüklenir.
Uygulamadaki Blazor WebAssembly ortamı okuma
Özelliği ekleyerek ve okuyarak IWebAssemblyHostEnvironment uygulamanın ortamını bir bileşende Environment alın.
ReadEnvironment.razor
:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
ortamı istemci tarafında okuma Blazor Web App
Bir bileşen veya uygulama için prerendering'in devre dışı bırakılmadığını varsayarsak, projedeki .Client
bir bileşen sunucuda önceden oluşturulur. Sunucunun kayıtlı IWebAssemblyHostEnvironment bir hizmeti olmadığından, hizmeti eklemek ve sunucu ön kullanımı sırasında hizmet uygulamasının ana bilgisayar ortamı uzantısı yöntemlerini ve özelliklerini kullanmak mümkün değildir. Hizmeti Etkileşimli WebAssembly veya Etkileşimli Otomatik bileşene eklemek aşağıdaki çalışma zamanı hatasına neden olur:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Bu sorunu gidermek için sunucusunda için IWebAssemblyHostEnvironment özel bir hizmet uygulaması oluşturun. Sunucu projesine aşağıdaki sınıfı ekleyin.
ServerHostEnvironment.cs
:
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.AspNetCore.Components;
public class ServerHostEnvironment(IWebHostEnvironment env, NavigationManager nav) :
IWebAssemblyHostEnvironment
{
public string Environment => env.EnvironmentName;
public string BaseAddress => nav.BaseUri;
}
Sunucu projesinin Program
dosyasında hizmeti kaydedin:
builder.Services.TryAddScoped<IWebAssemblyHostEnvironment, ServerHostEnvironment>();
Bu noktada, IWebAssemblyHostEnvironment hizmet etkileşimli bir WebAssembly veya etkileşimli Otomatik bileşenine eklenebilir ve Uygulamayı okuma Blazor WebAssembly bölümünde gösterildiği gibi kullanılabilir.
Yukarıdaki örnek, istemci ortamından farklı bir sunucu ortamına sahip olabileceğinizi gösterebilir; bu önerilmez ve rastgele sonuçlara yol açabilir. ortamında Blazor Web Appayarlarken, sunucu ve .Client
proje ortamlarını eşleştirmek en iyisidir. Bir test uygulamasında aşağıdaki senaryoyu göz önünde bulundurun:
- aracılığıyla
Blazor.start
ortamıylaStaging
istemci tarafı (webassembly
) ortam özelliğini uygulayın. Örnek için Başlangıç yapılandırması aracılığıyla istemci tarafı ortamını ayarlama bölümüne bakın. - Sunucu tarafı
Properties/launchSettings.json
dosyasını değiştirmeyin.environmentVariables
ortam değişkenininASPNETCORE_ENVIRONMENT
olarak ayarlandığıDevelopment
bölümü bırakın.
Özellik değişikliğinin IWebAssemblyHostEnvironment.Environment değerini kullanıcı arabiriminde görebilirsiniz.
Sunucuda prerendering gerçekleştiğinde, bileşen ortamda işlenir Development
:
Environment: Development
Bileşen yalnızca bir veya iki saniye sonra yeniden başlatıldığında, paket indirildikten ve .NET WebAssembly çalışma zamanı etkinleştirildikten sonra Blazor , değerler istemcinin istemcideki Staging
ortamda çalıştığını yansıtacak şekilde değişir:
Environment: Staging
Yukarıdaki örnekte, sunucu ortamını geliştirme, test ve üretim dağıtımları için istemci ortamıyla eşleşecek şekilde ayarlamanızı neden önerdiğimiz gösterilmektedir.
Daha fazla bilgi için, belgelerde daha sonra Blazor görünen İşleme modları makalesinin Ön kullanım sırasında İstemci tarafı hizmetleri çözümlenememesi bölümüne bakın.
Başlatma sırasında istemci tarafı ortamını okuma
başlatma sırasında, WebAssemblyHostBuilder özelliği aracılığıyla HostEnvironment özelliğini kullanıma sunar IWebAssemblyHostEnvironment ve konak oluşturucu kodunda ortama özgü mantığı etkinleştirir.
Program
dosyasında:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
, , Production
Staging
ve özel ortam adları için Development
geçerli ortamın denetlenme izniyle WebAssemblyHostEnvironmentExtensions sağlanan aşağıdaki kolaylık uzantısı yöntemleri:
Program
dosyasında:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
özelliği, IWebAssemblyHostEnvironment.BaseAddress hizmet kullanılabilir olmadığında NavigationManager başlatma sırasında kullanılabilir.
Ek kaynaklar
ASP.NET Core