ASP.NET Core Blazor ortamları
Not
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için, bu makalenin .NET 9 versiyonunagöz atı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. Mevcut sürüm için, bu makalenin .NET 9 sürümünebakın.
Önemli
Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Microsoft, burada sağlanan bilgilerle ilgili olarak açık veya zımni hiçbir garanti vermez.
Geçerli sürüm için, bu makalenin .NET 9 sürümünebakın.
Bu makale, bir Blazor uygulamasında ortamını nasıl yapılandıracağınızı ve okuyacağınızı açıklar.
Bir uygulamayı yerel olarak çalıştırırken, ortam varsayılan olarak Development
olarak değiştirilir. Uygulama yayımlandığında ortam varsayılan olarak Production
olarak 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 şekilde adlandırın (appsettings.Staging.json
). Üretim için ortam adı olarak "Production
" (büyük "P") kullanın ve uygulama ayarları dosyasını eşleşecek şekilde adlandırın (appsettings.Production.json
).
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ırma başlatma
- Tek başına Blazor WebAssembly:
Blazor-Environment
üst bilgi - Blazor Web App veya tek başına Blazor WebAssembly: Azure App Service
bir Blazor Web Appistemcisinde ortam, Blazor-Environment
adlı bir üst bilgi aracılığıyla ortamı tarayıcıya ileten bir ara yazılım aracılığıyla sunucudan belirlenir. Üst bilgi, WebAssemblyHost istemci tarafı Program
dosyasında (WebAssemblyHostBuilder.CreateDefault) oluşturulduğunda ortamı belirler.
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: yapılandırmayı başlatma Blazor
-
Blazor WebAssembly:
Blazor-Environment
üst bilgi - Blazor Server veya Blazor WebAssembly: Azure App Service
Blazor Web App istemcisinde veya barındırılan bir Blazor WebAssembly uygulamasının istemcisinde, ortam sunucudan ortamı Blazor-Environment
adlı bir üst bilgi aracılığıyla tarayıcıya ileten bir ara yazılım aracılığıyla belirlenir. İstemci tarafı Program
dosyasında (WebAssemblyHostBuilder.CreateDefault) WebAssemblyHost oluşturulduğunda, bu üst bilgi ortamı ayarlar.
Yerel olarak çalışan tek başına bir Blazor WebAssembly uygulaması için geliştirme sunucusu, barındırma ortamından alınan ortam adıyla Blazor-Environment
üst bilgisini ekler. Barındırma ortamı, projenin Properties/launchSettings.json
dosyası tarafından oluşturulan ASPNETCORE_ENVIRONMENT
ortam değişkeninden ortamı ayarlar.
Blazor WebAssembly proje şablonundan oluşturulan bir projedeki ortam değişkeninin varsayılan değeri Development
. Daha fazla bilgi için üst bilgi aracılığıyla istemci tarafı ortamını ayarlama
Uygulamanın geliştirme aşamasında yerel olarak çalışması için uygulama varsayılan olarak Development
ortamına ayarlı olur. Uygulamayı yayımlamak, ortamı varsayılan olarak Production
olarak ayarlıyor.
ASP.NET Core uygulama yapılandırması hakkında genel yönergeler için bkz. ASP.NET Core'nde birden çok ortam kullanma . Geliştirme ve test sırasında Development ortamı dışındaki ortamlarda statik dosyalar içeren sunucu tarafı uygulama yapılandırması için (örneğin, Staging), bkz. ASP.NET Core Blazor statik dosyaları.
Blazor başlangıç yapılandırması aracılığıyla istemci tarafı ortamını ayarlama
Aşağıdaki örnek, konak adı localhost
içeriyorsa, Staging
ortamında Blazor olarak başlar. 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 tutucusu Blazor betik yolu ve dosya adıdır. Betiğin konumu için bkz. ASP.NET Core Blazor proje yapısı.
Not
Blazor.start
yapılandırmasında webAssembly
>environment
özelliğini ayarlayan Blazor Web Appiçin, sunucu tarafı ortamını environment
özelliğinde ayarlanan ortamla eşleştirmek akıllıca olacaktır. Aksi takdirde, sunucuda ön işleme, istemcide işleme ile farklı bir ortamda çalışır ve bu da beklenmedik etkilere neden olur.
Blazor Web Apportamını ayarlama hakkında genel yönergeler için bkz. ASP.NET Core'da birden çok ortam kullanma .
Bağımsız 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 tutucusu Blazor betik yolu ve dosya adıdır. Betiğin konumu için bkz. ASP.NET Core Blazor proje yapısı.
environment
özelliğinin kullanılması, Blazor-Environment
üst bilgisitarafından ayarlanan ortamı geçersiz kılar.
Önceki yaklaşım, istemcinin ortamını Blazor-Environment
başlığının değerini değiştirmeden ayarlar ve genel Etkileşimli WebAssembly işlemeyi benimseyen bir Blazor Web App için sunucu projesinin başlangıç ortamının konsol kayıtlarını değiştirmez.
Bir Blazor WebAssembly projesi veya bir Blazor Web App.Client
projesinde ortamı konsola kaydetmek için, WebAssemblyHost, WebAssemblyHostBuilder.CreateDefault ile oluşturulduktan sonra ve projeyi oluşturup çalıştıran satırdan önce aşağıdaki C# kodunu Program
dosyasına yerleştirin (await builder.Build().RunAsync();
).
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Blazor başlangıç hakkında daha fazla bilgi için bkz. ASP.NET Core Blazor başlangıç.
üst bilgi aracılığıyla istemci tarafı ortamını ayarlayın
Blazor WebAssembly uygulamalar ortamı Blazor-Environment
başlığı üzerinden ayarlayabilir. Özellikle, yanıt üst bilgisinin _framework/blazor.boot.json
dosyasında ayarlanması gerekir, ancak diğer Blazor dosya istekleri veya Blazor dağıtımının tamamı için dosya sunucusu yanıtlarında üst bilgiyi ayarlamanın bir zararı yoktur.
Blazor çerçevesi üst bilgi adını karma harf durumunda kebap biçimiyle verir (Blazor-Environment
), ancak tümü küçük harf veya tümü büyük harf kebap biçimi kullanabilirsiniz (blazor-environment
, BLAZOR-ENVIRONMENT
).
Blazor'nin yerleşik geliştirme sunucusuyla yerel geliştirme çalıştırmaları için, projenin Properties/launchSettings.json
dosyasındaki ASPNETCORE_ENVIRONMENT
ortam değişkeninin değerini ayarlayarak Blazor-Environment
üst bilgisinin değerini denetleyebilirsiniz. Geliştirme sunucusuyla yerel olarak çalışırken, uygulamanın ortamını belirlemek için öncelik sırası Blazor.start
yapılandırma (environment
anahtar)>Blazor-Environment
yanıt üst bilgisi (blazor.boot.json
dosyası) >ASPNETCORE_ENVIRONMENT
ortam değişkenidir (launchSettings.json
). Dağıtılan bir Blazor WebAssembly uygulaması için ASPNETCORE_ENVIRONMENT
ortam değişkeni (launchSettings.json
) yaklaşımını kullanamazsınız. Bu teknik yalnızca uygulamanın yerel çalıştırmalarında geliştirme sunucusuyla çalışır.
IIS
Iis için aşağıdaki örnekte, yayımlanan web.config
dosyasına özel üst bilgi (Blazor-Environment
) eklenir.
web.config
dosyası, {TARGET FRAMEWORK}
yer tutucusunun hedef çerçeve olduğu bin/Release/{TARGET FRAMEWORK}/publish
klasöründe 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 publish
klasörüne yayımlandığında üzerine yazılmayan özel bir IIS için web.config
dosyasını kullanmak için bkz. ASP.NET Core Blazor WebAssemblybarındırma ve dağıtma.
Nginx
Nginx sunucuları için ngx_http_headers_module
add_header
yönergesini kullanın:
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
Apache
Apache sunucuları için mod_headers
modülündeki Header
yönergesini kullanın:
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Daha fazla bilgi için:
- Apache belgelerine ("
mod_headers
") - apache barındırma kılavuzu
Azure App Service ortamını ayarlama
Blazor WebAssembly bağımsız bir uygulama için, başlatma yapılandırması veya Blazor-Environment
üst bilgisiüzerinden ortamı el ile ayarlayabilirsiniz.
Sunucu tarafı bir uygulama için Ortamı Azure'daki bir ASPNETCORE_ENVIRONMENT
uygulama ayarı aracılığıyla ayarlayın:
Uygulama ayarları dosya adlarındaki ortam segmentlerinin, ortam adıyla büyük/küçük harf uyumunu tam olarak sağladığından emin olun. Örneğin,
Staging
ortamı için eşleşen uygulama ayarları dosya adıappsettings.Staging.json
. Dosya adıappsettings.staging.json
(küçük harf "s
") ise, dosya bulunmaz ve dosyadaki ayarlarStaging
ortamında kullanılmaz.Visual Studio dağıtımı için uygulamanın doğru dağıtım yuvasına dağıtıldığını onaylayın.
BlazorAzureAppSample
adlı bir uygulama için, uygulamaStaging
dağıtım yuvasına dağıtılır.Ortamın dağıtım yuvası için Azure portalında ortamı
ASPNETCORE_ENVIRONMENT
uygulama ayarıyla ayarlayın. BirBlazorAzureAppSample
uygulaması için hazırlık aşaması App Service YuvasıBlazorAzureAppSample/Staging
olarak adlandırılır.Staging
yuvasının yapılandırması içinASPNETCORE_ENVIRONMENT
içinStaging
değerine sahip bir uygulama ayarı oluşturun. Dağıtım yuvası ayarı için etkinleştirilmiştir.
Tarayıcıda istendiğinde, BlazorAzureAppSample/Staging
uygulaması https://blazorazureappsample-staging.azurewebsites.net
konumundaki Staging
ortamında yüklenir.
Uygulama tarayıcıda yüklendiğinde, blazor.boot.json
için yanıt üst bilgisi koleksiyonu Blazor-Environment
üst bilgi değerinin Staging
olduğunu gösterir.
Uygulama, {ENVIRONMENT}
yer tutucusunun uygulamanın ortamı olduğu appsettings.{ENVIRONMENT}.json
dosyasındaki ayarları yükler. Yukarıdaki örnekte, appsettings.Staging.json
dosyasındaki ayarlar yüklenir.
Blazor WebAssembly uygulamasında ortamı okuma
IWebAssemblyHostEnvironment ekleyerek ve Environment özelliğini okuyarak uygulamanın ortamını bir bileşende edinin.
ReadEnvironment.razor
:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Blazor Web App'dan ortamı istemci tarafında oku
Bir bileşen veya uygulama için prerendering'in devre dışı bırakılmadığını varsayarsak, .Client
projesindeki bir bileşen sunucuda önceden oluşturulur. Sunucunun kayıtlı bir IWebAssemblyHostEnvironment hizmeti olmadığından, hizmeti eklemek ve sunucu hazırlama 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 sunucuda IWebAssemblyHostEnvironment için ö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 hizmeti etkileşimli bir WebAssembly veya etkileşimli Otomatik bileşenine eklenebilir ve Ortamı Blazor WebAssembly uygulama okuma 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. Bir Blazor Web Apportamı ayarlarken, sunucu ve .Client
proje ortamlarını eşleştirmek en iyisidir. Bir test uygulamasında aşağıdaki senaryoyu göz önünde bulundurun:
-
Blazor.start
aracılığıylaStaging
ortamıyla istemci tarafı (webassembly
) ortam özelliğini uygulayın. Bir örnek için başlangıç yapılandırması aracılığıyla istemci tarafı ortamını ayarlamabölümüne bakın. - Sunucu tarafı
Properties/launchSettings.json
dosyasını değiştirmeyin.ASPNETCORE_ENVIRONMENT
ortam değişkeniDevelopment
olarak ayarlanmış haldeenvironmentVariables
bölümünden çıkın.
kullanıcı arabiriminde IWebAssemblyHostEnvironment.Environment özellik değişikliğinin değerini görebilirsiniz.
Sunucuda prerendering gerçekleştiğinde, bileşen Development
ortamında işlenir:
Environment: Development
Bileşen yalnızca bir veya iki saniye sonra yeniden başlatıldığında, Blazor paketi indirildikten ve .NET WebAssembly çalışma zamanı etkinleştirildikten sonra, değerler istemcinin istemcideki Staging
ortamında ç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, Blazor belgelerinde daha sonra yer alan İşleme modları makalesinin İstemci tarafı hizmetleri ön kullanım sırasında çözümlenememesi bölümüne bakın.
Başlatma sırasında istemci tarafı ortamını oku
Başlatma sırasında WebAssemblyHostBuilder, HostEnvironment özelliği aracılığıyla IWebAssemblyHostEnvironment'i, konak oluşturucu kodunda ortama özgü mantığı etkinleştiren şekilde kullanıma sunar.
Program
dosyasında:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
WebAssemblyHostEnvironmentExtensions aracılığıyla sağlanan aşağıdaki kolaylık uzantısı yöntemleri, Development
, Production
, Staging
ve özel ortam adları için geçerli ortamı denetlemeye izin verir:
Program
dosyasında:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
IWebAssemblyHostEnvironment.BaseAddress özelliği, NavigationManager hizmeti kullanılamadığında başlatma sırasında kullanılabilir.
Ek kaynaklar
- ASP.NET Core Blazor başlatma
- ASP.NET Core'da birden çok ortam kullanma
-
Blazor örnekleri GitHub deposu (
dotnet/blazor-samples
) (nasıl indirileceği)
ASP.NET Core