Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 10 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Artikel ini menjelaskan cara mengonfigurasi dan membaca lingkungan dalam aplikasi Blazor .
Saat menjalankan aplikasi secara lokal, lingkungan secara default diatur ke Development. Saat aplikasi diterbitkan, lingkungan default ke Production.
Kami merekomendasikan konvensi berikut:
Selalu gunakan nama lingkungan "
Development" untuk pengembangan lokal. Ini karena kerangka kerja ASP.NET Core mengharapkan nama tersebut persis saat mengonfigurasi aplikasi dan alat untuk eksekusi pengembangan lokal aplikasi.Untuk lingkungan pengujian, penahapan, dan produksi, selalu terbitkan dan sebarkan aplikasi. Anda dapat menggunakan skema penamaan lingkungan apa pun yang Anda inginkan untuk aplikasi yang diterbitkan, tetapi selalu gunakan nama file pengaturan aplikasi dengan casing segmen lingkungan yang sama persis dengan nama lingkungan. Untuk penahapan, gunakan "
Staging" (modal "S") sebagai nama lingkungan, dan beri nama file pengaturan aplikasi agar cocok (appsettings.Staging.json). Untuk produksi, gunakan "Production" (huruf besar "P") sebagai nama lingkungan, dan beri nama file pengaturan aplikasi agar sesuai (appsettings.Production.json).
Mengatur lingkungan
Lingkungan diatur menggunakan salah satu pendekatan berikut:
- Blazor Web App atau Blazor Server: Gunakan salah satu pendekatan yang dijelaskan di lingkungan runtime ASP.NET Core untuk aplikasi umum ASP.NET Core.
- Aplikasi apa pun Blazor : Blazor mulai konfigurasi
- Mandiri Blazor WebAssembly:
<WasmApplicationEnvironmentName>atribut
Pada klien untuk Blazor Web App, lingkungan ditentukan dari server melalui komentar HTML yang tidak berinteraksi dengan pengembang:
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
Untuk aplikasi mandiri Blazor WebAssembly , atur lingkungan dengan <WasmApplicationEnvironmentName> properti MSBuild di file proyek aplikasi (.csproj). Contoh berikut menyetel lingkungan Staging:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
Lingkungan default adalah Development untuk build dan Production untuk dipublikasikan.
Ada beberapa pendekatan untuk mengatur lingkungan di aplikasi mandiri Blazor WebAssembly selama operasi build/publish dan satu pendekatan untuk aplikasi yang dimulai atau berjalan pada klien:
Atur nilai properti saat
dotnet buildataudotnet publishdijalankan. Contoh berikut mengatur lingkungan keStagingsaat aplikasi diterbitkan:dotnet publish -p:WasmApplicationEnvironmentName=StagingAtur properti selama build atau publikasikan berdasarkan konfigurasi aplikasi di Visual Studio. Grup properti berikut dapat digunakan dalam file proyek aplikasi atau file konfigurasi penerbitan apa pun (
.pubxml). Tambahkan grup properti tambahan untuk konfigurasi build lain yang digunakan.<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Release'"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Lingkungan dapat diatur berdasarkan penggunaan profil penerbitan. Dalam contoh berikut, kondisi pertama mengatur lingkungan ke
Developmentketika tidak ada profil penerbitan yang digunakan (berlaku untuk operasi build dan terbitkan tanpa profil), sementara kondisi kedua mencakup pengaturan lingkungan keProductionketika profil publikasi digunakan:<PropertyGroup Condition="'$(PublishProfile)' == ''"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(PublishProfile)' != ''"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Buat titik akhir API web sisi server kustom. Aplikasi mandiri Blazor WebAssembly meminta lingkungannya dari API web baik di startup aplikasi atau sesuai permintaan saat sedang berjalan. Nilai harus diteruskan ke
WebAssemblyStartOptionsatau denganwithApplicationEnvironment.Nota
Tautan dokumentasi ke sumber referensi .NET biasanya memuat cabang default repositori, yang mewakili pengembangan saat ini untuk rilis .NET berikutnya. Untuk memilih tag untuk rilis tertentu, gunakan menu dropdown Ganti cabang atau tag. Untuk informasi lebih lanjut, lihat Cara memilih tag versi kode sumber ASP.NET Core (dotnet/AspNetCore.Docs #26205).
- Blazor Web App atau Blazor Server: Gunakan salah satu pendekatan yang dijelaskan di lingkungan runtime ASP.NET Core untuk aplikasi umum ASP.NET Core.
- Aplikasi apa pun Blazor :
-
Blazor WebAssembly:
Blazor-Environmentheader
Pada klien untuk Blazor Web App, lingkungan ditentukan dari server melalui middleware yang mengomunikasikan lingkungan ke browser melalui header bernama Blazor-Environment. Header menetapkan konteks saat WebAssemblyHost dibuat dalam file klien sisi Program (WebAssemblyHostBuilder.CreateDefault).
Untuk aplikasi mandiri Blazor WebAssembly yang berjalan secara lokal, server pengembangan menambahkan Blazor-Environment header dengan nama lingkungan yang diperoleh dari lingkungan hosting. Lingkungan hosting mengatur lingkungan dari variabel lingkungan yang ASPNETCORE_ENVIRONMENT ditetapkan oleh file proyek Properties/launchSettings.json . Nilai default variabel lingkungan dalam proyek yang dibuat dari Blazor WebAssembly templat proyek adalah Development. Untuk informasi selengkapnya, lihat bagian Atur lingkungan sisi klien melalui header .
- Blazor Server: Gunakan salah satu pendekatan yang dijelaskan di lingkungan runtime ASP.NET Core untuk aplikasi umum ASP.NET Core.
- Blazor Server atau Blazor WebAssembly:
-
Blazor WebAssembly:
Blazor-Environmentheader
Pada klien aplikasi yang dihosting Blazor WebAssembly , lingkungan ditentukan dari server melalui middleware yang mengomunikasikan lingkungan ke browser melalui header bernama Blazor-Environment. Header menetapkan konteks saat WebAssemblyHost dibuat dalam file klien sisi Program (WebAssemblyHostBuilder.CreateDefault).
Untuk aplikasi mandiri Blazor WebAssembly yang berjalan secara lokal, server pengembangan menambahkan Blazor-Environment header dengan nama lingkungan yang diperoleh dari lingkungan hosting. Lingkungan hosting mengatur lingkungan dari variabel lingkungan yang ASPNETCORE_ENVIRONMENT ditetapkan oleh file proyek Properties/launchSettings.json . Nilai default variabel lingkungan dalam proyek yang dibuat dari Blazor WebAssembly templat proyek adalah Development. Untuk informasi selengkapnya, lihat bagian Atur lingkungan sisi klien melalui header .
Untuk aplikasi yang berjalan secara lokal selama tahap pengembangan, aplikasi akan menggunakan secara default lingkungan Development. Menerbitkan aplikasi mengatur lingkungan menjadi Production.
Untuk panduan umum tentang konfigurasi aplikasi ASP.NET Core, lihat lingkungan runtime ASP.NET Core. Untuk konfigurasi aplikasi sisi server dengan file statis di lingkungan selain Development lingkungan selama pengembangan dan pengujian (misalnya, Staging), lihat File statis di ASP.NET Core.
Mengatur lingkungan klien melalui konfigurasi startup Blazor
Contoh berikut dimulai Blazor di Staging lingkungan jika nama host menyertakan localhost. Jika tidak, lingkungan diatur ke nilai defaultnya.
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>
Dalam contoh sebelumnya, {BLAZOR SCRIPT} placeholder adalah Blazor jalur skrip dan nama file. Untuk lokasi skrip, lihat Blazor proyek ASP.NET Core.
Nota
Untuk Blazor Web App yang menetapkan properti webAssembly>environment dalam konfigurasi Blazor.start, bijaksana untuk mencocokkan lingkungan sisi server dengan lingkungan yang diatur pada properti environment. Sebaliknya, prarendering di server beroperasi di bawah lingkungan yang berbeda dengan penyajian di klien, yang menghasilkan efek yang tidak menentu. Untuk panduan umum tentang mengatur lingkungan untuk Blazor Web App, lihat lingkungan runtime ASP.NET Core.
Mandiri Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
Dalam contoh sebelumnya, {BLAZOR SCRIPT} placeholder adalah Blazor jalur skrip dan nama file. Untuk lokasi skrip, lihat Blazor proyek ASP.NET Core.
Penggunaan properti environment akan menggantikan lingkungan yang ditetapkan oleh Blazor-Environment header.
Pendekatan sebelumnya mengonfigurasi lingkungan klien tanpa mengubah nilai dari header, dan juga tidak mengubah pencatatan log konsol proyek server dari lingkungan startup untuk Blazor-Environment yang telah mengadopsi rendering WebAssembly Interaktif global.
Untuk mencatat lingkungan aplikasi ke konsol, baik pada aplikasi mandiri Blazor WebAssembly atau proyek .Client dari Blazor Web App, tempatkan kode C# berikut ini dalam file Program setelah WebAssemblyHost dibuat dengan WebAssemblyHostBuilder.CreateDefault dan sebelum baris yang membangun dan menjalankan proyek (await builder.Build().RunAsync();).
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Untuk informasi lebih lanjut tentang startup Blazor, lihat startup BlazorASP.NET Core.
Mengatur lingkungan sisi klien melalui header
Blazor WebAssembly aplikasi dapat mengatur lingkungan dengan Blazor-Environment header. Secara khusus, header respons harus diatur pada file _framework/blazor.boot.json, tetapi tidak ada salahnya mengatur header pada respons server file untuk permintaan file lain Blazor atau pada seluruh penerapan Blazor.
Blazor Meskipun kerangka kerja mengeluarkan nama header dalam kasus kebab dengan huruf campuran (Blazor-Environment), Anda dipersilakan untuk menggunakan huruf kebab all-lower atau all-upper (blazor-environment, BLAZOR-ENVIRONMENT).
Untuk menjalankan pengembangan lokal dengan server pengembangan bawaan Blazor, Anda dapat mengontrol nilai header Blazor-Environment dengan mengatur nilai variabel lingkungan ASPNETCORE_ENVIRONMENT dalam file Properties/launchSettings.json proyek. Saat dijalankan secara lokal dengan server pengembangan, urutan prioritas untuk menentukan lingkungan aplikasi adalah Blazor.startenvironment, header respons (> file), Blazor-Environment variabel lingkungan blazor.boot.json(>). Anda tidak dapat menggunakan pendekatan variabel lingkungan ASPNETCORE_ENVIRONMENT (launchSettings.json) untuk aplikasi yang telah di-deploy Blazor WebAssembly. Teknik ini hanya berfungsi dengan server pengembangan pada eksekusi lokal aplikasi.
IIS
Dalam contoh berikut untuk IIS, header kustom (Blazor-Environment) ditambahkan ke file yang diterbitkan web.config . File web.config terletak di bin/Release/{TARGET FRAMEWORK}/publish folder , di mana {TARGET FRAMEWORK} tempat penampung adalah kerangka kerja target:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="Blazor-Environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Nota
Untuk menggunakan file kustom web.config untuk IIS yang tidak akan tertimpa saat aplikasi diterbitkan ke folder publish, lihat Hosting dan penyebaran ASP.NET Core Blazor WebAssembly dengan IIS.
Nginx.
Untuk server Nginx, gunakan arahan add_header dari ngx_http_headers_module:
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Untuk informasi selengkapnya, lihat sumber daya berikut ini:
Apache
Untuk server Apache, gunakan arahan Header dari mod_headers modul:
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Untuk informasi selengkapnya, lihat sumber daya berikut ini:
-
Dokumentasi Apache (cari rilis terbaru untuk "
mod_headers") - Host dan sebarkan ASP.NET Core Blazor WebAssembly dengan Apache
Mengatur lingkungan untuk Azure App Service
Untuk aplikasi mandiri Blazor WebAssembly , Anda dapat mengatur lingkungan secara manual melalui konfigurasi mulai atau Blazor-Environment header.
Untuk aplikasi sisi server, atur lingkungan melalui ASPNETCORE_ENVIRONMENT pengaturan aplikasi di Azure:
Pastikan bahwa casing bagian lingkungan dalam nama file pengaturan aplikasi sesuai dengan casing nama lingkungan secara tepat. Misalnya, nama file pengaturan aplikasi yang cocok untuk
Staginglingkungan adalahappsettings.Staging.json. Jika nama file adalahappsettings.staging.json(huruf kecil "s"), file tidak berada, dan pengaturan dalam file tidak digunakan diStaginglingkungan.Untuk penyebaran Visual Studio, konfirmasikan bahwa aplikasi disebarkan ke slot penyebaran yang benar. Untuk sebuah aplikasi bernama
BlazorAzureAppSample, aplikasi tersebut disebarkan di slot penyebaranStaging.Di portal Azure untuk slot penempatan lingkungan, atur lingkungan dengan pengaturan aplikasi
ASPNETCORE_ENVIRONMENT. Untuk aplikasi bernamaBlazorAzureAppSample, Slot Penahapan App Service diberi namaBlazorAzureAppSample/Staging. Untuk konfigurasi slotStaging, buat pengaturan aplikasiASPNETCORE_ENVIRONMENTdengan nilaiStaging. Pengaturan slot penyebaran diaktifkan untuk pengaturan.
Saat diminta di browser, aplikasi BlazorAzureAppSample/Staging dimuat di lingkungan Staging di https://blazorazureappsample-staging.azurewebsites.net.
Saat aplikasi dimuat di browser, kumpulan header respons untuk blazor.boot.json menunjukkan bahwa Blazor-Environment nilai header adalah Staging.
Pengaturan aplikasi dari appsettings.{ENVIRONMENT}.json file dimuat oleh aplikasi, di mana {ENVIRONMENT} tempat penampung adalah lingkungan aplikasi. Dalam contoh sebelumnya, pengaturan dari file appsettings.Staging.json dimuat.
Membaca lingkungan pada Blazor WebAssembly aplikasi
Dapatkan lingkungan aplikasi dalam komponen dengan menyuntikkan IWebAssemblyHostEnvironment dan membaca Environment properti .
ReadEnvironment.razor:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Membaca sisi klien lingkungan dalam Blazor Web App
Dengan asumsi bahwa pra-penyajian tidak dinonaktifkan untuk komponen atau aplikasi, komponen dalam .Client proyek telah dirender di server. Karena server tidak memiliki layanan IWebAssemblyHostEnvironment yang terdaftar, tidak memungkinkan untuk menyuntikkan layanan dan menggunakan metode serta properti ekstensi lingkungan host dari implementasi layanan selama prarendering server. Menyuntikkan layanan ke komponen Interactive WebAssembly atau Interactive Auto menghasilkan kesalahan runtime berikut:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Untuk mengatasi hal ini, buat implementasi layanan kustom untuk IWebAssemblyHostEnvironment di server. Untuk informasi selengkapnya dan contoh implementasi, lihat implementasi layanan kustom di bagian server dari artikel Prarendering , yang muncul nanti dalam Blazor dokumentasi.
Membaca lingkungan sisi klien selama startup
Selama startup, WebAssemblyHostBuilder mengekspos IWebAssemblyHostEnvironment melalui HostEnvironment properti , yang memungkinkan logika khusus lingkungan dalam kode pembangun host.
Dalam file Program:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
Metode ekstensi berikut yang disediakan melalui WebAssemblyHostEnvironmentExtensions memungkinkan untuk memeriksa lingkungan saat ini untuk Development, Production, Staging, dan nama lingkungan kustom:
Dalam file Program:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
Properti IWebAssemblyHostEnvironment.BaseAddress dapat digunakan selama startup saat NavigationManager layanan tidak tersedia.
Sumber daya tambahan
ASP.NET Core