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.
Bu makalede,.NET 7'de mevcut bir ASP.NET Core projesinin .NET 8'e nasıl güncelleştirilecekleri açıklanmaktadır.
Önkoşullar
ASP.NET ve web geliştirme iş yüküyle Visual Studio 2022.
içinde .NET SDK sürümünü güncelleştirme global.json
Eğer belirli bir .NET Core SDK sürümünü hedeflemek için bir global.json
dosyası kullanıyorsanız, yüklü olan .NET 8 SDK sürümüne version
özelliğini güncelleyin. Örneğin:
{
"sdk": {
- "version": "7.0.100"
+ "version": "8.0.100"
}
}
Hedef çerçeveyi güncelleştirme
Proje dosyasının Target Framework Takma Adını (TFM) olarak net8.0
güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net7.0</TargetFramework>
+ <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Paket başvurularını güncelleştirme
Proje dosyasında, her Microsoft.AspNetCore.*
, Microsoft.EntityFrameworkCore.*
, Microsoft.Extensions.*
ve System.Net.Http.Json
paket başvurusunun Version
özniteliğini 8.0.0 veya üzeri olarak güncelleştirin. Örneğin:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="7.0.12" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.12" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
- <PackageReference Include="System.Net.Http.Json" Version="7.0.1" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="8.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
</ItemGroup>
Blazor
Aşağıdaki geçiş senaryoları ele alınmıştır:
- Uygulamayı Blazor Server güncelleştirme
- Tüm Blazor Web App kuralları benimseyin
- Bir uygulamayı bir Blazor Server uygulamaya dönüştürme Blazor Web App
- Uygulamayı Blazor WebAssembly güncelleştirme
- Barındırılan Blazor WebAssembly bir uygulamayı bir uygulamaya dönüştürme Blazor Web App
- Hizmet ve uç nokta seçeneği yapılandırmasını güncelleştirme
- Yarp yönlendirmesi ile bırakma Blazor Server geçici çözümü
-
Düzen bileşenlerindeki bileşenleri geçirme
CascadingValue
-
BlazorEnableCompression
MSBuild özelliğini taşıma -
<CascadingAuthenticationState>
bileşenini, kimlik doğrulama durumu hizmetlerini basamaklı hale getirmek için taşıma - Yeni makale: Geçiş sırasında HTTP önbelleğe alma sorunları
- Yeni makale: Statik sunucu tarafı işleme (statik SSR) ile sınıf kitaplıklarıyla ilgili yeni makale
- Ek derlemelerden bileşenleri bulma
Parametre bir sorgu dizesinden sağlandığında özniteliğini kaldır - Blazor Server betik geri dönüş ilkesi yetkilendirmesi
ASP.NET Core uygulamasına destek ekleme Blazor yönergeleri için bkz. ASP.NET Core Razor bileşenlerini MVC veya Razor Sayfalar ile tümleştirme.
Uygulamayı Blazor Server güncelleştirme
.NET 8'de Blazor Web App bileşenlerini kullanmanızı öneririz, ancak Blazor Server desteklenir. .NET 8 ile kullanmaya Blazor Server devam etmek için bu makalenin ilk üç bölümündeki yönergeleri izleyin:
-
içinde .NET SDK sürümünü güncelleştirme
global.json
- Hedef çerçeveyi güncelleştirme
- Paket başvurularını güncelleştirme
için Blazorsunulan yeni Blazor Web App özellikler .NET 8 altında çalıştırılacak şekilde güncelleştirilen bir Blazor Server uygulamada kullanılamaz. Yeni .NET 8 Blazor özelliklerini benimsemek istiyorsanız aşağıdaki bölümlerden birinde yer alan yönergeleri izleyin:
- Tüm Blazor Web App kuralları benimseyin
- Bir uygulamayı bir Blazor Server uygulamaya dönüştürme Blazor Web App
Tüm Blazor Web App kuralları benimseyin
İsteğe bağlı olarak tüm yeni Blazor Web App kuralları benimsemek için aşağıdaki işlemi öneririz:
- Proje şablonundan Blazor Web App yeni bir uygulama oluşturun. Daha fazla bilgi için bkz. ASP.NET Core Blazoriçin araçlar.
- Uygulamanızın bileşenlerini ve kodunu yeni Blazor Web Appöğesine taşıyın ve yeni özellikleri benimsemek için değişiklikler gerçekleştirin.
- Blazor Web App düzenini ve stillerini güncelleyin.
Yeni .NET 8 özellikleri, .NET 8'de ASP.NET Core'daki yenilikler bölümünde ele alınmıştır. .NET 6 veya önceki sürümlerinden bir uygulamayı güncelleştirirken, geçiş ve sürüm notlarına (Yenilikler makaleleri) göz atın.
Blazor Server uygulamasını Blazor Web App uygulamasına dönüştürme
Blazor Server uygulamalar herhangi bir kod değişikliği olmadan .NET 8'de desteklenir. Bir Blazor Server uygulamayı eşdeğer bir .NET 8 Blazor Web Appsürümüne dönüştürmek için aşağıdaki kılavuzu kullanın ve bu da tüm yeni .NET 8 özelliklerini kullanılabilir hale getirir.
Önemli
Bu bölüm, .NET 7 Blazor Server uygulamasını .NET 8'e Blazor Web Appdönüştürmek için gereken en düşük değişikliklere odaklanır. Tüm yeni Blazor Web App kuralları benimsemek için Tüm Blazor Web App kuralları benimseyin bölümündeki yönergeleri izleyin.
Bu makalenin ilk üç bölümünde yer alan yönergeleri izleyin:
Bileşenin
App
(App.razor
) içeriğini projenin kök klasörüne eklenen yeniRoutes
bir bileşen dosyasına (Routes.razor
) taşıyın.App.razor
Boş dosyayı projenin kök klasöründeki uygulamada bırakın.Uygulamada kısa işleme modlarını kullanılabilir hale getirmek için dosyaya bir girdi
_Imports.razor
ekleyin:@using static Microsoft.AspNetCore.Components.Web.RenderMode
Sayfadaki (
_Host
) içeriğiPages/_Host.cshtml
boşApp.razor
dosyaya taşıyın. Aşağıdaki değişiklikleriApp
bileşenine yapmaya devam edin.Uyarı
Aşağıdaki örnekte projenin ad alanı şeklindedir
BlazorServerApp
. Ad alanını projenizle eşleşecek şekilde ayarlayın.Dosyanın üst kısmından aşağıdaki satırları kaldırın:
- @page "/" - @using Microsoft.AspNetCore.Components.Web - @namespace BlazorServerApp.Pages - @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Yukarıdaki satırları bir IHostEnvironment örneği içeren bir satırla değiştirin.
@inject IHostEnvironment Env
~
etiketindenhref
tilde karakterini kaldırın ve uygulamanızın başlangıç yoluyla<base>
öğesini değiştirin.- <base href="~/" /> + <base href="/" />
HeadOutlet bileşeni için Bileşen Etiketi Yardımcısı'nı kaldırın ve yerine HeadOutlet bileşenini ekleyin.
Aşağıdaki satırı kaldırın:
- <component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
Yukarıdaki satırı aşağıdakilerle değiştirin:
<HeadOutlet @rendermode="InteractiveServer" />
App
bileşeni için Bileşen Etiketi Yardımcısı'nı kaldırın ve yerineRoutes
bileşenini ekleyin.Aşağıdaki satırı kaldırın:
- <component type="typeof(App)" render-mode="ServerPrerendered" />
Yukarıdaki satırı aşağıdakilerle değiştirin:
<Routes @rendermode="InteractiveServer" />
Uyarı
Yukarıdaki yapılandırma, uygulamanın bileşenlerinin etkileşimli sunucu işlemeyi benimsediğini varsayar. Statik sunucu tarafı işlemeyi (SSR) benimseme de dahil olmak üzere daha fazla bilgi için bkz. ASP.NET Çekirdek Blazor işleme modları.
Hata arabirimi için Çevre Etiketi Yardımcılarını kaldırın ve bunları aşağıdaki Razor işaretlemeyle değiştirin.
Aşağıdaki satırları kaldırın:
- <environment include="Staging,Production"> - An error has occurred. This application may no longer respond until reloaded. - </environment> - <environment include="Development"> - An unhandled exception has occurred. See browser dev tools for details. - </environment>
Önceki satırları aşağıdakilerle değiştirin:
@if (Env.IsDevelopment()) { <text> An unhandled exception has occurred. See browser dev tools for details. </text> } else { <text> An error has occurred. This app may no longer respond until reloaded. </text> }
Blazor betiğini
blazor.server.js
'denblazor.web.js
'ye değiştirin:- <script src="_framework/blazor.server.js"></script> + <script src="_framework/blazor.web.js"></script>
Pages/_Host.cshtml
Dosyayı silin.Güncelleme
Program.cs
:Uyarı
Aşağıdaki örnekte projenin ad alanı şeklindedir
BlazorServerApp
. Ad alanını projenizle eşleşecek şekilde ayarlayın.Projenin ad alanı için dosyanın en üstüne bir
using
deyim ekleyin:using BlazorServerApp;
AddServerSideBlazor öğesini AddRazorComponents öğesi ile değiştirin ve AddInteractiveServerComponents öğesine zincirleme bir çağrı yapın.
Aşağıdaki satırı kaldırın:
- builder.Services.AddServerSideBlazor();
Önceki satırı Razor bileşeni ve etkileşimli sunucu bileşeni hizmetleriyle değiştirin. AddRazorComponents çağrılması varsayılan olarak yetkisiz giriş önleyici hizmetler (AddAntiforgery) ekler.
builder.Services.AddRazorComponents() .AddInteractiveServerComponents();
Aşağıdaki satırı kaldırın:
- app.MapBlazorHub();
Önceki satırı, MapRazorComponents bileşenini kök bileşen türü olarak sağlayarak
App
çağrısı ile değiştirin ve AddInteractiveServerRenderMode'ye zincirlenmiş bir çağrı ekleyin.app.MapRazorComponents<App>() .AddInteractiveServerRenderMode();
Aşağıdaki satırı kaldırın:
- app.MapFallbackToPage("/_Host");
Yönlendirme Ara Yazılımını Kaldır:
- app.UseRouting();
İstek işleme hattına Sahtekarlık Önleyici Ara Yazılımı ekleyin, HTTPS Yeniden Yönlendirme Ara Yazılımını ekleyen satırdan sonra (
app.UseHttpsRedirection
).app.UseAntiforgery();
Önceki
app.UseAntiforgery
çağrısı, varsaapp.UseAuthentication
veapp.UseAuthorization
çağrılarından sonra yerleştirilmelidir. Önceden açıklandığı gibi,builder.Services.AddAntiforgery
tarafından otomatik olarak eklendiklerinden, hile önleme hizmetlerini (AddRazorComponents) açıkça eklemeye gerek yoktur.Blazor Server uygulama, önceden oluşturmayı devre dışı bırakacak şekilde yapılandırıldıysa, güncellenmiş uygulama için önceden oluşturmayı devre dışı bırakmaya devam edebilirsiniz. bileşeninde
App
ve@rendermode
bileşenleri için Razor yönerge özniteliklerine HeadOutletRoutes
atanan değeri değiştirin.@rendermode
ve HeadOutlet bileşenleri içinRoutes
yönerge özniteliğinin değerini değiştirerek ön kaydı devre dışı bırakın.- @rendermode="InteractiveServer" + @rendermode="new InteractiveServerRenderMode(prerender: false)"
Daha fazla bilgi için bkz . ASP.NET Core Blazor işleme modları.
Uygulamayı Blazor WebAssembly güncelleştirme
Bu makalenin ilk üç bölümünde yer alan yönergeleri izleyin:
-
içinde .NET SDK sürümünü güncelleştirme
global.json
- Hedef çerçeveyi güncelleştirme
- Paket başvurularını güncelleştirme
Gecikmeli derleme yüklemesini benimseyen uygulamalar için, .dll
benimsenmesini yansıtmak amacıyla dosya uzantısını uygulamanın entegrasyonunda .wasm
'den Blazor WebAssembly'ye değiştirin.
.NET 8'in yayımlanmasından önce, ASP.NET Core barındırılan Blazor WebAssembly uygulamalar için dağıtım düzeni kılavuzu, istemcilerin çok parçalı paketleme yaklaşımıyla DLL'leri indirmesini ve yürütmesini engelleyen ortamları ele alır. .NET 8 veya sonraki sürümlerinde, Blazor bu sorunu gidermek için Webcil dosya biçimini kullanır. WebAssembly dağıtım düzeni makalesi tarafından açıklanan deneysel NuGet paketinin kullanıldığı çok parçalı paketleme, .NET 8 veya sonraki sürümlerdeki uygulamalar için Blazor desteklenmez. .NET 8 veya üzeri uygulamalarda çok parçalı paket paketini kullanmaya devam etmek istiyorsanız, makaledeki yönergeleri kullanarak kendi çok parçalı paketleme NuGet paketinizi oluşturabilirsiniz, ancak Microsoft tarafından desteklenmez.
Barındırılan Blazor WebAssembly uygulamayı bir Blazor Web App uygulamaya dönüştürün
Blazor WebAssembly uygulamalar herhangi bir kod değişikliği olmadan .NET 8'de desteklenir. ASP.NET Core'da barındırılan Blazor WebAssembly bir uygulamayı eşdeğer bir .NET 8'e Blazor Web Appdönüştürmek için aşağıdaki kılavuzu kullanın ve bu da tüm yeni .NET 8 özelliklerini kullanılabilir hale getirir.
Önemli
Bu bölüm, .NET 7 ASP.NET Core barındırılan Blazor WebAssembly bir uygulamayı .NET 8'e Blazor Web Appdönüştürmek için gereken en düşük değişikliklere odaklanır. Tüm yeni Blazor Web App kuralları benimsemek için Tüm Blazor Web App kuralları benimseyin bölümündeki yönergeleri izleyin.
Bu makalenin ilk üç bölümünde yer alan yönergeleri izleyin:
-
içinde .NET SDK sürümünü güncelleştirme
global.json
- Hedef çerçeveyi güncelleştirme
- Paket başvurularını güncelleştirme
Önemli
Yukarıdaki kılavuzu kullanarak çözümün
.Client
,.Server
ve.Shared
projelerini güncelleştirin.-
içinde .NET SDK sürümünü güncelleştirme
.Client
Proje dosyasına ().csproj
aşağıdaki MSBuild özelliklerini ekleyin:<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile> <StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
Proje dosyasında
.Client
ayrıcaMicrosoft.AspNetCore.Components.WebAssembly.DevServer
paket başvurusunu kaldırın.- <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"... />
Dosya içeriğini
.Client/wwwroot/index.html
dosyasından,App
projesinin kökünde oluşturulan yeni birApp.razor
bileşen dosyasına (.Server
) taşıyın. Dosyanın içeriğini taşıdıktan sonra dosyayı silinindex.html
.Adını
App.razor
projesinde.Client
'denRoutes.razor
olarak değiştirin.Routes.razor
içindeAppAssembly
özniteliğinin değerinitypeof(Program).Assembly
olarak güncelleyin..Client
projesinde, uygulamada kısa işleme modlarını kullanılabilir hale getirmek için_Imports.razor
dosyasına bir giriş ekleyin.@using static Microsoft.AspNetCore.Components.Web.RenderMode
.Client
projesinin_Imports.razor
dosyasının bir kopyasını oluşturun ve.Server
projesine ekleyin.App.razor
dosyasına aşağıdaki değişiklikleri yapın.Web sitesinin varsayılan web sitesi başlığını (
<title>...</title>
) bir HeadOutlet bileşenle değiştirin. Daha sonra kullanmak üzere web sitesi başlığını not alın ve başlık etiketlerini ve başlığını kaldırın:- <title>...</title>
Başlığı kaldırdığınız yerde, Etkileşimli WebAssembly işleme modunu atayan bir HeadOutlet bileşeni yerleştirin (ön işleme devre dışı):
<HeadOutlet @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
CSS stil paketini değiştirin:
- <link href="{CLIENT PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet"> + <link href="{SERVER PROJECT ASSEMBLY NAME}.styles.css" rel="stylesheet">
Önceki koddaki yer tutucular:
-
{CLIENT PROJECT ASSEMBLY NAME}
: İstemci projesi derleme adı. Örnek:BlazorSample.Client
-
{SERVER PROJECT ASSEMBLY NAME}
: Sunucu projesi derleme adı. Örnek:BlazorSample.Server
Aşağıdaki
<div>...</div>
HTML işaretlemesini bulun:- <div id="app"> - ... - </div>
Etkileşimli WebAssembly işleme modunu kullanarak önceki
<div>...</div>
HTML işaretlemesiniRoutes
bileşenle değiştirin (ön kayıt devre dışı):<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
blazor.webassembly.js
betiğiniblazor.web.js
olarak güncelleştirin.- <script src="_framework/blazor.webassembly.js"></script> + <script src="_framework/blazor.web.js"></script>
-
.Client
Projenin düzen dosyasını (.Client/Shared/MainLayout.razor
) açın ve web sitesinin varsayılan başlığına (PageTitleyer tutucu) sahip bir{TITLE}
bileşen ekleyin:<PageTitle>{TITLE}</PageTitle>
Uyarı
Diğer düzen dosyaları da varsayılan web sitesi başlığına sahip bir PageTitle bileşen almalıdır.
Daha fazla bilgi için bkz. ASP.NET Core Blazor uygulamalarında kafa içeriğini denetleme.
.Client/Program.cs
'dan aşağıdaki satırları kaldırın.- builder.RootComponents.Add<App>("#app"); - builder.RootComponents.Add<HeadOutlet>("head::after");
Güncelleme
.Server/Program.cs
:Projeye Razor bileşeni ve etkileşimli WebAssembly bileşeni hizmetlerini ekleyin. Zincirleme bir çağrı yöntemiyle AddRazorComponents ve AddInteractiveWebAssemblyComponents'i çağırın. AddRazorComponents çağrılması varsayılan olarak yetkisiz giriş önleyici hizmetler (AddAntiforgery) ekler.
builder.Services.AddRazorComponents() .AddInteractiveWebAssemblyComponents();
İstek işleme işlem hattına Antiforgery Ara Yazılımı ekleyin.
app.UseHttpsRedirection
çağrıya sonra aşağıdaki satırı yerleştirin. Çağrıapp.UseAntiforgery
, varsaapp.UseAuthentication
veapp.UseAuthorization
, çağrılarının ardından yerleştirilmelidir. Önceden açıklandığı gibi,builder.Services.AddAntiforgery
tarafından otomatik olarak eklendiklerinden, hile önleme hizmetlerini (AddRazorComponents) açıkça eklemeye gerek yoktur.app.UseAntiforgery();
Aşağıdaki satırı kaldırın:
- app.UseBlazorFrameworkFiles();
Aşağıdaki satırı kaldırın:
- app.MapFallbackToFile("index.html");
Önceki satırı kök bileşen türü olarak MapRazorComponents bileşenini sağlayan
App
çağrısıyla değiştirin ve AddInteractiveWebAssemblyRenderMode ve AddAdditionalAssemblies zincirlenmiş çağrılar ekleyin.app.MapRazorComponents<App>() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof({CLIENT APP NAMESPACE}._Imports).Assembly);
Önceki örnekte,
{CLIENT APP NAMESPACE}
yer tutucu,.Client
projesinin ad alanıdır (örneğin,HostedBlazorApp.Client
).Çözümü projeden
.Server
çalıştırın:Visual Studio için, uygulamayı çalıştırırken
.Server
projenin seçili olduğunu onaylayın..NET CLI kullanıyorsanız projeyi projenin klasöründen
.Server
çalıştırın.
Hizmet ve uç nokta seçeneği yapılandırmasını güncelleştirme
.NET 8'de Blazor Web App'nin yayımıyla birlikte, Blazor hizmet ve uç nokta ayarları, etkileşimli bileşen hizmetleri ve bileşen uç noktası yapılandırması için yeni API tanıtımıyla güncellenir.
Güncelleştirilmiş yapılandırma kılavuzu aşağıdaki konumlarda görünür:
- Uygulamanın ortamını ayarlama ve okuma: Özellikle, Blazor Web App
- Sunucu tarafı bağlantı hattı işleyici seçenekleri: Yeni Blazor-SignalR bağlantı hattı ve hub seçenekleri yapılandırmasını kapsar.
- JavaScript'ten bileşenleri işlemeRazor: ile RegisterForJavaScriptdinamik bileşen kaydını kapsar.
-
Blazor özel öğeler: Blazor Web App kaydı:
RegisterCustomElement
ile kök bileşen özel öğe kaydını kapsar. - Varlıklar için Blazor WebAssembly ön ek: Varlıklar için ön eki belirten yol dizesinin kontrolünü kapsar.
- Geçici yönlendirme URL'si geçerlilik süresi: Sunucu tarafı işleme tarafından Blazor yayılan geçici yönlendirme URL'lerinin veri koruma süresini kontrol etmeyi kapsar.
- Ayrıntılı hatalar: Bileşen sunucu tarafı işleme için Razor ayrıntılı hataları etkinleştirmeyi kapsar.
- Prerendering yapılandırması: Ön işleme Blazor Web App'ler için varsayılan olarak etkindir. Bir uygulamanın ön aboneliği devre dışı bırakmasını gerektiren özel durumlarınız varsa, ön aboneliği devre dışı bırakma yönergeleri için bu bağlantıyı izleyin.
- Form bağlama seçenekleri: Form bağlama seçenekleri yapılandırmasını kapsar.
Yarp yönlendirme geçici çözümüyle Blazor Server'ı kaldırma
Daha önce Yarp ile bir Blazor Server uygulamayı .NET 6 veya .NET başlığı altında yer alan yönergeleri izlediyseniz, makalenin yönergelerini izleyerek uyguladığınız geçici çözüm adımlarını tersine çevirebilirsiniz. Yarp ile Blazor Server için yönlendirme ve derin bağlantı, .NET 8'de doğru şekilde çalışır.
Düzen bileşenlerindeki CascadingValue
bileşenlerini taşımak
Basamaklı parametreler işleme modu sınırları arasında veri geçirmez ve düzenler statik olarak başka etkileşimli uygulamalarda işlenir. Bu nedenle, etkileşimli olarak işlenen bileşenlerde basamaklı parametreleri kullanmaya çalışan uygulamalar, düzendeki değerleri art arda getiremez.
Geçiş için iki yaklaşım şunlardır:
- (Önerilen) Durumu kök düzeyinde basamaklı değer olarak geçirin. Daha fazla bilgi için bkz. Kök düzeyinde basamaklı değerler ve bildirimler içeren kök düzeyinde basamaklı değerler hakkında yönergeler.
- Yönlendiriciyi
Routes
bileşeninin içineCascadingValue
bileşeni ile sarın veRoutes
bileşeninin etkileşimli olarak işlenmesini sağlayın. Bir örnek için bkzCascadingValue
. bileşen.
Daha fazla bilgi için bkz. Basamaklı değerler/parametreler ve işleme modu sınırları.
BlazorEnableCompression
MSBuild özelliğini geçirme
Sıkıştırmayı devre dışı bırakan ve .NET 7 veya önceki sürümleri hedefleyen ancak .NET 8 SDK'sı ile oluşturulan uygulamalar için Blazor WebAssembly ile başlayan MSBuild özelliği BlazorEnableCompression
, CompressionEnabled
olarak değiştirildi.
<PropertyGroup>
- <BlazorEnableCompression>false</BlazorEnableCompression>
+ <CompressionEnabled>false</CompressionEnabled>
</PropertyGroup>
.NET CLI publish komutunu kullanırken yeni özelliğini kullanın:
dotnet publish -p:CompressionEnabled=false
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- Statik Web Varlıkları Sıkıştırma Anahtarı Değişikliği (dotnet/duyurular #283)
- ASP.NET Core'u barındırma ve dağıtma Blazor WebAssembly
<CascadingAuthenticationState>
Bileşeni basamaklı kimlik doğrulama durumu hizmetlerine geçirme
.NET 7 veya önceki sürümlerinde, CascadingAuthenticationState bileşen, basamaklı kimlik doğrulama durumu sağlamak için kullanıcı arabirimi ağacının bir bölümüne, örneğin yönlendiricinin Blazor etrafında sarmalanır:
<CascadingAuthenticationState>
<Router ...>
...
</Router>
</CascadingAuthenticationState>
.NET 8'de şu bileşeni kullanmayın CascadingAuthenticationState :
- <CascadingAuthenticationState>
<Router ...>
...
</Router>
- </CascadingAuthenticationState>
Bunun yerine, AddCascadingAuthenticationState dosyasında Program
çağırarak hizmet koleksiyonuna basamaklı kimlik doğrulama durumu hizmetlerini ekleyin.
builder.Services.AddCascadingAuthenticationState();
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- ASP.NET Core Blazor kimlik doğrulaması ve yetkilendirme makalesi
- ASP.NET Çekirdek Blazor kimlik doğrulaması ve yetkilendirme
HTTP önbelleğe alma sorunlarıyla ilgili yeni makale
Uygulamaları ana sürümlere yükseltirken Blazor ortaya çıkabilecek bazı yaygın HTTP önbelleğe alma sorunlarını ve HTTP önbelleğe alma sorunlarının nasıl giderildiğini ele alan yeni bir makale ekledik.
Daha fazla bilgi için bkz . ASP.NET Core Blazor uygulamalarını yükseltirken HTTP önbelleğe alma sorunlarını önleme.
Statik sunucu tarafı işleme (statik SSR) ile sınıf kitaplıklarıyla ilgili yeni makale
Statik sunucu tarafı işleme (static SSR) ile Razor sınıf kitaplıklarında (RCL) bileşen kitaplığı yazarlığını ele alan yeni bir makale ekledik.
Daha fazla bilgi için bkz. statik sunucu tarafı işleme (statik SSR) ile ASP.NET Core Razor sınıf kitaplıkları (KCL'ler).
Ek derlemelerden bileşenleri bulma
Blazor Server uygulamasından Blazor Web App uygulamasına geçiş yaparken, uygulama, bileşen sınıfı kitaplıkları gibi ek derlemelerden yönlendirilebilir bileşenler kullanıyorsa, ASP.NET Core Blazor yönlendirme ve gezinti kılavuzuna erişin.
Parametre bir sorgu dizesinden sağlandığında [Parameter]
özniteliğini kaldırın.
[Parameter]
Sorgu dizesinden bir parametre sağlanırken özniteliği artık gerekli değildir:
- [Parameter]
[SupplyParameterFromQuery]
Blazor Server betik geri dönüş politikası yetkilendirme
.NET 7'de betik Blazor Server (blazor.server.js
) Statik Dosya Ara Yazılımı tarafından işlenir. .NET 7 uygulamalarında statik dosyalar ara yazılımının (UseStaticFiles) Yetkilendirme Ara Yazılımı (UseAuthorization) çağrısından önce istek işleme hattına yerleştirilmesi, Blazor betiğini anonim kullanıcılara sunmak için yeterlidir.
.NET 8'de, Blazor Server betiği, uç nokta yönlendirmesi kullanılarak kendi uç noktasından sunulur. Bu değişiklik, Hata düzeltildi - UseStaticFiles’a seçeneklerin geçirilmesi sorun yaratıyor Blazor Server (dotnet/aspnetcore
#45897) ile sunulmuştur.
Aşağıdaki durumlarda çok kiracılı bir senaryo düşünün:
- Hem varsayılan hem de geri dönüş ilkeleri aynı şekilde ayarlanır.
- Kiracı, istek yolundaki ilk kesim (örneğin,
tld.com/tenant-name/...
) kullanılarak çözümlenir. - Kiracı uç noktalarına yönelik istekler, istek ilkesine ek bir kimlik ekleyen ek bir kimlik doğrulama düzeniyle doğrulanır.
- Geri dönüş yetkilendirme ilkesi, ek kimlik aracılığıyla talepleri denetleen gereksinimlere sahiptir.
Blazor betik dosyası istekleri (blazor.server.js
), çerçevede sabit bir konum olan /_framework/blazor.server.js
üzerinde sunulur. Dosya isteklerinin kimliği kiracılar için ek kimlik doğrulama düzeni tarafından doğrulanmamıştır, ancak yine de geri dönüş ilkesi tarafından zorlanır ve bu da yetkisiz bir sonuç döndürülmesiyle sonuçlanır.
Bu sorun, FallbackPolicy RequireAuthenticatedUser (dotnet/aspnetcore
51836) ile çalışmayan MapRazorComponents içinde, Kasım 2024'te çıkması planlanan .NET 9 sürümü için yeni bir çerçeve özelliği olarak değerlendirme aşamasındadır. O zamana kadar, aşağıdaki üç yaklaşımdan herhangi birini kullanarak bu soruna geçici bir çözüm bulabilirsiniz:
Geri dönüş ilkesi kullanmayın.
[Authorize]
niteliğini_Imports.razor
dosyasında uygulayarak uygulamanın tüm bileşenlerine uygulayın. Blazor olmayan uç noktalar için açıkça[Authorize]
veyaRequireAuthorization
kullanın.[AllowAnonymous]
dosyasındaki/_framework/blazor.server.js
uç noktasınaProgram
ekleyin.app.MapBlazorHub().Add(endpointBuilder => { if (endpointBuilder is RouteEndpointBuilder { RoutePattern: { RawText: "/_framework/blazor.server.js" } }) { endpointBuilder.Metadata.Add(new AllowAnonymousAttribute()); } });
Özel bir
AuthorizationHandler
'ü kaydederek öğesiniHttpContext
denetleyen,/_framework/blazor.server.js
dosyasının geçmesine izin verin.
Docker
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için DockerfileFROM
deyimlerini ve betiklerini güncelleştirin. .NET 8 çalışma zamanını içeren bir temel görüntü kullanın. .NET 7'de ASP.NET Core ile .NET 8 arasındaki aşağıdaki docker pull
komut farkını göz önünde bulundurun:
- docker pull mcr.microsoft.com/dotnet/aspnet:7.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:8.0
Docker bağlantı noktasını güncelleştirme
.NET kapsayıcı görüntülerinde yapılandırılan varsayılan ASP.NET Core bağlantı noktası 80 numaralı bağlantı noktasından 8080'e güncelleştirildi.
Yeni ASPNETCORE_HTTP_PORTS
ortam değişkeni, öğesine ASPNETCORE_URLS
daha basit bir alternatif olarak eklendi.
Daha fazla bilgi için bakınız:
- Varsayılan ASP.NET Core bağlantı noktası 80'den 8080'e değiştirildi.
-
Bağlantı noktalarını yalnızca
ASPNETCORE_HTTP_PORTS
ile belirtin
Önemli değişiklikleri gözden geçirme
.NET 7'den .NET 8'e geçişteki önemli değişiklikler için, .NET 8'deki Önemli Değişiklikler belgesine bakın; bu belge ASP.NET Core ve Entity Framework Core bölümlerini içerir.
ASP.NET Core