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.
Catatan
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 menghosting dan menyebarkan aplikasi Blazor.
Menerbitkan aplikasi
Aplikasi diterbitkan untuk penyebaran dalam konfigurasi Rilis.
Catatan
Terbitkan Blazor WebAssemblysolusi yang dihosting dari proyek Server.
-
Pilih perintah Terbitkan {APPLICATION} dari menu Build, tempat
{APPLICATION}tempat penampung nama aplikasi. - Pilih terbitkan target. Untuk menerbitkan secara lokal, pilih Folder. Pilih Selanjutnya.
- Saat menerbitkan secara lokal, terima lokasi folder default atau tentukan lokasi yang berbeda. Pilih Selesai untuk menyimpan profil. Pilih Tutup.
- Untuk membersihkan folder publikasi target sebelum menerbitkan aplikasi, pilih Tampilkan semua pengaturan. Pilih Pengaturan>Opsi Terbitkan File>Hapus semua file yang ada sebelum menerbitkan. Pilih Simpan.
- Pilih tombol Terbitkan.
Menerbitkan aplikasi akan memicu pemulihan dependensi proyek dan membangun proyek sebelum membuat aset untuk penyebaran. Sebagai bagian dari proses pembangunan, metode dan rangkaian yang tidak digunakan dihapus untuk mengurangi ukuran unduhan aplikasi dan waktu muat.
Kosongkan folder penerbitan target
Saat menggunakan dotnet publish perintah dalam shell perintah untuk menerbitkan aplikasi, perintah menghasilkan file yang diperlukan untuk penyebaran berdasarkan status proyek saat ini dan menempatkan file ke dalam folder output yang ditentukan. Perintah tidak secara otomatis membersihkan folder target sebelum menerbitkan aplikasi.
Untuk mengosongkan folder target secara otomatis sebelum aplikasi diterbitkan, tambahkan target MSBuild berikut ke file proyek aplikasi (.csproj) di bawah elemen root <Project> :
<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
<RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>
Lokasi publikasi default
-
Blazor Web App: Aplikasi diterbitkan ke dalam folder
/bin/Release/{TARGET FRAMEWORK}/publish, di mana tempat penampung{TARGET FRAMEWORK}adalah kerangka target. Sebarkan konten dari folderpublishke host. - Standalone Blazor WebAssembly Mandiri: Aplikasi diterbitkan ke folder
bin/Release/{TARGET FRAMEWORK}/publishataubin/Release/{TARGET FRAMEWORK}/browser-wasm/publish. Untuk menyebarkan apl sebagai situs statis, salin konten dari folderwwwrootke host situs statis.
-
Blazor Server: Aplikasi diterbitkan ke dalam folder
/bin/Release/{TARGET FRAMEWORK}/publish, di mana placeholder{TARGET FRAMEWORK}adalah kerangka kerja target. Sebarkan konten dari folderpublishke host. - Blazor WebAssembly
- Mandiri: Aplikasi diterbitkan ke dalam folder
/bin/Release/{TARGET FRAMEWORK}/publishataubin/Release/{TARGET FRAMEWORK}/browser-wasm/publish. Untuk menyebarkan apl sebagai situs statis, salin konten dari folderwwwrootke host situs statis. - Dihosting: Aplikasi server ASP.NET Core dan aplikasi klien Blazor WebAssembly diterbitkan ke folder
/bin/Release/{TARGET FRAMEWORK}/publishaplikasi server, bersama dengan aset web statis aplikasi klien. Sebarkan konten dari folderpublishke host.
- Mandiri: Aplikasi diterbitkan ke dalam folder
IIS
Untuk menghosting Blazor aplikasi di IIS, lihat sumber daya berikut:
- Hosting IIS
- Blazor: aplikasi (.NET 8 atau yang lebih baru) dan aplikasi (.NET 7 atau yang lebih lama) yang berjalan di IIS, termasuk IIS dengan Azure Virtual Machines (VM) yang menjalankan OS Windows dan Azure App Service.
- Host dan sebarkan ASP.NET Core Blazor WebAssembly dengan IIS: Aplikasi mandiri Blazor WebAssembly (semua versi .NET) dan aplikasi yang dihosting Blazor WebAssembly (.NET 7 atau versi sebelumnya).
- Hosting sub-aplikasi IIS
- Ikuti panduan jalur dasar aplikasi sebelum menerbitkan aplikasi. Contoh menggunakan jalur
/CoolAppdasar aplikasi dan menunjukkan cara mendapatkan jalur dasar dari pengaturan aplikasi atau penyedia konfigurasi lainnya. - Ikuti panduan konfigurasi sub-aplikasi dalam Konfigurasi tingkat lanjut. Jalur folder sub-aplikasi di bawah situs akar menjadi jalur virtual sub-aplikasi. Untuk jalur
/CoolAppdasar aplikasi , Blazor aplikasi ditempatkan di folder bernamaCoolAppdi bawah situs akar dan sub-aplikasi mengambil jalur virtual ./CoolApp
- Ikuti panduan jalur dasar aplikasi sebelum menerbitkan aplikasi. Contoh menggunakan jalur
Berbagi kelompok aplikasi di antara aplikasi ASP.NET Core tidak didukung, termasuk untuk aplikasi Blazor. Gunakan satu kelompok aplikasi per aplikasi saat menghosting dengan IIS, dan hindari penggunaan direktori virtual IIS untuk menghosting beberapa aplikasi.
Satu atau beberapa aplikasi Blazor WebAssembly yang dihosting oleh aplikasi ASP.NET Core, yang dikenal sebagai solusi Blazor WebAssembly yang dihosting, didukung untuk satu kelompok aplikasi. Namun, kami tidak menyarankan atau mendukung penetapan satu kelompok aplikasi ke beberapa solusi Blazor WebAssembly yang dihosting atau dalam skenario penghostingan sub-aplikasi.
Untuk informasi lebih lanjut tentang solusi, lihat Peralatan untuk ASP.NET Core Blazor.
Dukungan penggabung JavaScript
Blazor Runtime bergantung pada file JavaScript (JS), runtime .NET yang dikompilasi ke dalam kode WebAssembly, dan rakitan terkelola yang dikemas sebagai file WebAssembly. Blazor Saat aplikasi dibangun, Blazor runtime bergantung pada file-file ini yang berasal dari lokasi build yang berbeda. Karena kendala ini, output build Blazor tidak kompatibel dengan bundler JS, seperti Gulp, Webpack, dan Rollup.
Untuk menghasilkan output build yang kompatibel dengan JS bunder selama penerbitan, atur WasmBundlerFriendlyBootConfig properti MSBuild ke true dalam file proyek aplikasi:
<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>
Penting
Fitur ini hanya menghasilkan output ramah bundler saat menerbitkan aplikasi.
Output tidak dapat dijalankan secara langsung di browser, tetapi dapat digunakan oleh JS alat untuk memaketkan JS file dengan skrip lainnya yang disediakan pengembang.
Ketika WasmBundlerFriendlyBootConfig diaktifkan, yang dihasilkan oleh JS berisi import arahan untuk semua aset di aplikasi, yang membuat dependensi terlihat untuk bundler. Banyak aset tidak dapat dimuat oleh browser, tetapi bunder biasanya dapat dikonfigurasi untuk mengenali aset berdasarkan jenis file mereka untuk menangani pemuatan. Untuk informasi lebih lanjut tentang cara mengonfigurasi bundler Anda, lihat dokumentasi bundler.
Catatan
Pembuatan bundel output harus dimungkinkan dengan memetakan impor ke lokasi file individual menggunakan plugin kustom bundler JS. Kami tidak menyediakan plugin seperti itu saat ini.
Catatan
files Mengganti plugin dengan url, semua file aplikasiJS, termasuk Blazorruntime -WebAssembly (base64 dikodekan dalam JS), dibundel ke dalam output. Ukuran file secara signifikan lebih besar (misalnya, 300% lebih besar) daripada ketika file dikumpulkan dengan files plugin, jadi kami tidak merekomendasikan penggunaan url plugin sebagai praktik umum saat menghasilkan output yang ramah bundler untuk JS pemrosesan bunder.
Contoh aplikasi berikut didasarkan pada Rollup. Konsep serupa berlaku saat menggunakan bundler lain JS.
Aplikasi sampel demonstrasi untuk Blazor WebAssembly di aplikasi React (BlazorWebAssemblyReact) dan .NET di WebAssembly di aplikasi React (DotNetWebAssemblyReact) untuk .NET 10 atau yang lebih baru tersedia di Blazor repositori GitHub sampel (dotnet/blazor-samples).
Aspek Blazor WebAssembly caching berlaku untuk Blazor Web Apps
Blazor panduan penyimpanan sementara bundel dan penyimpanan sementara HTTP dalam Blazor WebAssembly node berfokus pada aplikasi standalone Blazor WebAssembly, tetapi beberapa aspek penyimpanan sementara sisi klien dalam artikel ini juga berlaku untuk Blazor Web App yang mengadopsi mode render Interactive WebAssembly atau Interactive Auto. Jika Blazor Web App yang merender konten sisi klien mengalami masalah aset statis atau caching bundel, lihat panduan dalam artikel ini untuk memecahkan masalah:
Blazor Server
MapFallbackToPage konfigurasi
Bagian ini hanya berlaku untuk Blazor Server aplikasi. MapFallbackToPage tidak didukung di Blazor Web Apps dan Blazor WebAssembly aplikasi.
Dalam skenario di mana aplikasi memerlukan area terpisah dengan sumber daya kustom dan komponen Razor:
Buat folder di dalam folder
Pagesaplikasi untuk menyimpan sumber daya. Misalnya, bagian administrator aplikasi dibuat di folder baru bernamaAdmin(Pages/Admin).Buat halaman akar (
_Host.cshtml) untuk area tersebut. Misalnya, buat filePages/Admin/_Host.cshtmldari halaman akar utama aplikasi (Pages/_Host.cshtml). Jangan berikan arahan@pagedi halaman Admin_Host.Tambahkan tata letak ke folder area (misalnya,
Pages/Admin/_Layout.razor). Di tata letak untuk area terpisah, atur tag<base>hrefagar sesuai dengan folder area (misalnya,<base href="/Admin/" />). Untuk tujuan demonstrasi, tambahkan~/ke sumber daya statis di halaman. Contohnya:~/css/bootstrap/bootstrap.min.css~/css/site.css-
~/BlazorSample.styles.css(namespace aplikasi contoh adalahBlazorSample) -
~/_framework/blazor.server.js(skrip Blazor)
Jika area tersebut harus memiliki folder aset statisnya sendiri, tambahkan folder tersebut dan tentukan lokasinya ke Middleware File Statis di
Program.cs(misalnya,app.UseStaticFiles("/Admin/wwwroot")).Komponen Razor ditambahkan ke folder area. Minimal, tambahkan komponen
Indexke folder area dengan arahan@pageyang benar untuk area tersebut. Misalnya, tambahkan filePages/Admin/Index.razorberdasarkan filePages/Index.razordefault aplikasi. Tunjukkan area Admin sebagai template rute di bagian atas file (@page "/admin"). Tambahkan komponen tambahan sesuai kebutuhan. Misalnya,Pages/Admin/Component1.razordengan@pagedirektif dan template rute@page "/admin/component1.Di
Program.cs, panggil MapFallbackToPage untuk jalur permintaan area tepat sebelum jalur halaman akar cadangan ke halaman_Host:... app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host"); app.MapFallbackToPage("/_Host"); app.Run();
ASP.NET Core