Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakı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. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.
Bu makalede Blazor uygulamalarını barındırma ve dağıtma açıklanmaktadır.
Uygulamayı yayımlayın
Uygulamalar, Sürüm yapılandırmasında dağıtım için yayımlanır.
-
Derleme menüsünden Yayınla {APPLICATION} komutunu seçin, burada
{APPLICATION}yer tutucusu uygulamanın adıdır. - Yayımlama hedefini seçin. Yerel olarak yayımlamak için Klasör’ü seçin. sonrakiseçin.
- Yerel olarak yayımlarken, varsayılan klasör konumunu kabul edin veya farklı bir konum belirtin. Profili kaydetmek için Son'u seçin. Kapat'ıseçin.
- Uygulamayı yayımlamadan önce hedefin yayımlama klasörünü temizlemek için Tüm ayarları göster'i seçin. Ayarlar>Dosya Yayımlama Seçenekleri>Yayımlamadan önce var olan tüm dosyaları sil'i seçin. Kaydetseçeneğini seçin.
- Yayımla düğmesini seçin.
Uygulamanın yayımlanması, projenin bağımlılıklarının geri yüklenmesini tetikler ve dağıtım için varlıkları oluşturmadan önce projeyi derler. Derleme işleminin bir parçası olarak, uygulama indirme boyutunu ve yükleme sürelerini azaltmak için kullanılmayan yöntemler ve derlemeler kaldırılır.
Hedef yayımlama klasörünü boşaltma
Bir uygulamayı yayımlamak için komut kabuğunda komutunu kullanırken dotnet publish , komut projenin geçerli durumuna göre dağıtım için gerekli dosyaları oluşturur ve dosyaları belirtilen çıkış klasörüne yerleştirir. Komut, uygulamayı yayımlamadan önce hedef klasörü otomatik olarak temizlemez.
Uygulama yayımlanmadan önce hedef klasörü otomatik olarak boşaltmak için, aşağıdaki MSBuild hedefini kök .csproj öğesinin altına uygulamanın proje dosyasına (<Project>) ekleyin:
<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
<RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>
Varsayılan yayımlama konumları
-
Blazor Web App: Uygulama,
/bin/Release/{TARGET FRAMEWORK}/publishyer tutucusunun hedef çerçeve olduğu{TARGET FRAMEWORK}klasöründe yayımlanır.publishklasörünün içeriğini konağa dağıtın. - Tek başına Blazor WebAssembly: Uygulama
bin/Release/{TARGET FRAMEWORK}/publishveyabin/Release/{TARGET FRAMEWORK}/browser-wasm/publishklasörüne yayımlanır. Uygulamayı statik site olarak dağıtmak içinwwwrootklasörünün içeriğini statik site konağına kopyalayın.
-
Blazor Server: Uygulama,
/bin/Release/{TARGET FRAMEWORK}/publishyer tutucusunun hedef çerçeve olduğu{TARGET FRAMEWORK}klasöründe yayımlanır..publishklasörünün içeriğini konağa dağıtın. - Blazor WebAssembly
- Tek başına: Uygulama
/bin/Release/{TARGET FRAMEWORK}/publishveyabin/Release/{TARGET FRAMEWORK}/browser-wasm/publishklasörüne yayımlanır. Uygulamayı statik site olarak dağıtmak içinwwwrootklasörünün içeriğini statik site konağına kopyalayın. - Barındırılan: Sunucu ASP.NET Core uygulaması ve istemci Blazor WebAssembly uygulaması, istemci uygulamasının statik web varlıklarıyla birlikte sunucu uygulamasının
/bin/Release/{TARGET FRAMEWORK}/publishklasöründe yayımlanır.publishklasörünün içeriğini konağa dağıtın.
- Tek başına: Uygulama
IIS
IIS'de bir Blazor uygulama barındırmak için aşağıdaki kaynaklara bakın:
- IIS barındırma
- ASP.NET Core sunucu tarafı uygulamalarını (.NET 8 veya daha sonrası) ve Blazor uygulamalarını (.NET 7 veya öncesi) barındırın ve dağıtın: Windows işletim sistemi ve Azure App Service çalıştıran Azure Sanal Makineler (VM) ile IIS dahil olmak üzere IIS üzerinde.
- IIS ile ASP.NET Core Blazor WebAssembly barındırma ve dağıtma: Tek başına Blazor WebAssembly uygulamalar (tüm .NET sürümleri) ve barındırılan Blazor WebAssembly uygulamalar (.NET 7 veya öncesi).
- IIS alt uygulama barındırma
- Uygulamayı yayımlamadan önce uygulama temel yol kılavuzunu izleyin. Örneklerde uygulamasının
/CoolApptemel yolu kullanılır ve temel yolun uygulama ayarlarından veya diğer yapılandırma sağlayıcılarından nasıl elde edileceğini gösterir. - Gelişmiş yapılandırma'daki alt uygulama yapılandırma yönergelerini izleyin. Alt uygulamanın kök site altındaki klasör yolu, alt uygulamanın sanal yolu olur.
/CoolAppuygulama temel yolu için, Blazor uygulaması kök sitedeCoolAppadlı bir klasöre yerleştirilir ve alt uygulama/CoolAppsanal yolunu alır.
- Uygulamayı yayımlamadan önce uygulama temel yol kılavuzunu izleyin. Örneklerde uygulamasının
Blazor uygulamaları dahil olmak üzere ASP.NET Core uygulamaları arasında uygulama havuzunun paylaşılması desteklenmez. IIS ile barındırırken uygulama başına bir uygulama havuzu kullanın ve birden çok uygulama barındırmak için IIS'nin sanal dizinlerini kullanmaktan kaçının.
Blazor WebAssembly olarak bilinen bir ASP.NET Core uygulaması tarafından barındırılan bir veya daha fazla Blazor WebAssembly uygulaması, bir uygulama havuzu için desteklenir. Ancak, birden çok barındırılan Blazor WebAssembly çözümüne veya alt uygulama barındırma senaryolarına tek bir uygulama havuzu atamayı önermiyoruz veya desteklemiyoruz.
Çözümler hakkında daha fazla bilgi için bkz. ASP.NET Core Blazor araçları.
JavaScript paketleyici desteği
Çalışma Blazor zamanı JavaScript (JS) dosyalarına, WebAssembly kodunda derlenmiş .NET çalışma zamanına ve WebAssembly dosyaları olarak paketlenmiş yönetilen derlemelere dayanır. Bir Blazor uygulama oluşturulduğunda, Blazor çalışma zamanı farklı derleme konumlarından bu dosyalara bağlıdır. Bu kısıtlama nedeniyle derleme Blazorçıkışı JS, Webpack ve Rollup gibi paketleyicilerle uyumlu değildir.
JS paketleyicilerle uyumlu derleme çıkışı oluşturmak için uygulamanın proje dosyasında MSBuild özelliğini WasmBundlerFriendlyBootConfig olarak ayarlayıntrue:
<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>
Önemli
Bu özellik yalnızca uygulamayı yayımlarken paketleyici dostu çıkışı üretir.
Çıkış, tarayıcıda doğrudan çalıştırılamaz, ancak geliştirici tarafından sağlanan betiklerle birlikte JS dosyalarını paketlemek için JS araçlar tarafından kullanılabilir.
Etkinleştirildiğinde WasmBundlerFriendlyBootConfig , oluşturulan JS uygulamadaki tüm varlıklar için yönergeler içerir import ve bu da bağımlılıkları paketleyici için görünür hale getirir. Varlıkların çoğu tarayıcı tarafından yüklenemez, ancak paketleyiciler genellikle yüklemeyi işlemek için varlıkları dosya türlerine göre tanıyacak şekilde yapılandırılabilir. Paketleyicinizi yapılandırma hakkında ayrıntılı bilgi için paketleyicinin belgelerine bakın.
Not
Derleme çıktısını paketlemek, içeri aktarmaları paketleyici özel eklentisi kullanarak JS tek tek dosya konumlarına eşleyerek mümkün olmalıdır. Şu anda böyle bir eklenti sağlamıyoruz.
Not
files eklentisini url ile değiştirerek, uygulamanın JS dosyalarının tümü, Blazor-WebAssembly çalışma zamanı (JS içinde base64 kodlanmış) dahil olmak üzere çıktıda paketlenir. Dosyanın boyutu, dosyaların eklentiyle files seçki olarak seçildiğinden çok daha büyüktür (örneğin, 300% daha büyüktür), bu nedenle paketleyici işleme için url paketleyici dostu çıkış üretirken eklentiyi JS genel bir uygulama olarak kullanmanızı önermiyoruz.
Aşağıdaki örnek uygulamalar Rollup'ı temel alır. Diğer JS paketleyiciler kullanılırken de benzer kavramlar geçerlidir.
.NET 10 veya üzeri sürümler için Blazor WebAssembly React uygulamasındaBlazorWebAssemblyReact (DotNetWebAssemblyReact) ve WebAssembly'de .NET için örnek uygulamalar, örnek GitHub deposunda (Blazor)kullanılabilirdotnet/blazor-samples.
Önbelleğe alma özellikleri Blazor WebAssembly s için Blazor Web Appgeçerlidir
Blazor düğümündeki Blazor WebAssembly paket önbelleğe alma ve HTTP önbelleğe alma kılavuzu, bağımsız Blazor WebAssembly uygulamalara odaklanır, ancak bu makalelerdeki istemci tarafı önbelleğe almanın çeşitli yönleri, Etkileşimli WebAssembly veya Etkileşimli Otomatik işleme modlarını benimseyen Blazor Web Appler için de geçerlidir. İçeriği istemci tarafında işleyen bir Blazor Web App statik varlık veya paket önbelleğe alma sorunuyla karşılaşırsa, sorunu gidermek için bu makalelerdeki kılavuza bakın:
Blazor Server
MapFallbackToPage yapılandırması
Bu bölüm yalnızca uygulamalar için Blazor Server geçerlidir. MapFallbackToPage ne Blazor Web App'lerde ne de Blazor WebAssembly uygulamalarında desteklenmez.
Bir uygulamanın özel kaynaklara ve Razor bileşenlerine sahip ayrı bir alan gerektirdiği senaryolarda:
Kaynakları tutmak için uygulamanın
Pagesklasöründe bir klasör oluşturun. Örneğin, bir uygulamanın yönetici bölümüAdmin(Pages/Admin) adlı yeni bir klasörde oluşturulur.Alan için bir kök sayfa (
_Host.cshtml) oluşturun. Örneğin, uygulamanın ana kök sayfasından (Pages/Admin/_Host.cshtml) birPages/_Host.cshtmldosyası oluşturun. Yönetici@pagesayfasında_Hostyönergesi sağlama.Alanın klasörüne bir düzen ekleyin (örneğin,
Pages/Admin/_Layout.razor). Ayrı alanın düzeninde<base>etiketini alanın klasörüyle eşleşecek şekildehrefolarak ayarlayın (örneğin,<base href="/Admin/" />). Tanıtım amacıyla, sayfadaki statik kaynaklara~/ekleyin. Örneğin:~/css/bootstrap/bootstrap.min.css~/css/site.css-
~/BlazorSample.styles.css(BlazorSample, örnek uygulamanın ad alanıdır) -
~/_framework/blazor.server.js(Blazor betiği)
Alanın kendi statik varlık klasörü olması gerekiyorsa, klasörü ekleyin ve
Program.csiçinde Statik Dosya Ara Yazılımına (örneğin,app.UseStaticFiles("/Admin/wwwroot")) konumu belirtin.Razor bileşenler, alanın klasörüne eklenir. En azından, alan klasörüne alan için doğru
Indexyönergesine sahip bir@pagebileşeni ekleyin. Örneğin, uygulamanın varsayılanPages/Admin/Index.razordosyasını temel alan birPages/Index.razordosyası ekleyin. Yönetici alanını dosyanın (@page "/admin") en üstünde yol şablonu olarak belirtin. Gerekirse ek bileşenler ekleyin. Örneğin,Pages/Admin/Component1.razoryönergesi ve@pageyol şablonuna sahip@page "/admin/component1.Program.csiçinde, MapFallbackToPage sayfasının geri dönüş kök sayfası yolundan hemen önce alanın istek yolu için_Hostçağırın:... app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host"); app.MapFallbackToPage("/_Host"); app.Run();
ASP.NET Core