.NET 7'de ASP.NET Core'dan .NET 8'e geçiş
Bu makalede, mevcut bir ASP.NET Core 7.0 projesinin ASP.NET Core 8.0'a nasıl güncelleştirilecekleri açıklanmaktadır.
Önkoşullar
Visual Studio 2022 ile ASP.NET ve web geliştirme iş yükü.
içinde .NET SDK sürümünü güncelleştirme global.json
Belirli bir .NET Core SDK sürümünü hedeflemek için bir global.json
dosya kullanırsanız, özelliğini yüklü .NET 8.0 SDK sürümüne güncelleştirin version
. Ö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.00 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 geçirme<CascadingAuthenticationState>
Bileşeni basamaklı kimlik doğrulama durumu hizmetlerine geçirme- 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 drop
[Parameter]
özniteliği - Blazor Server betik geri dönüş ilkesi yetkilendirmesi
ASP.NET Core uygulamasına destek ekleme Blazor hakkında yönergeler için bkz . ASP.NET Core Razor bileşenlerini ASP.NET Core uygulamalarıyla tümleştirme.
Uygulamayı Blazor Server güncelleştirme
.NET 8'de s kullanmanızı Blazor Web Appö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 Blazor Web Appsunulan yeni Blazor ö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.
- düzenini ve stillerini güncelleştirin Blazor Web App.
Yeni .NET 8 özellikleri, ASP.NET Core 8.0'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.
Bir uygulamayı bir Blazor Server uygulamaya dönüştürme Blazor Web App
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 (
Pages/_Host.cshtml
) içeriği_Host
boşApp.razor
dosyaya taşıyın. Bileşende aşağıdaki değişiklikleriApp
yapmaya devam edin.Not
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 örneği ekleyen bir IHostEnvironment çizgiyle değiştirin:
@inject IHostEnvironment Env
etiketinden
href
<base>
tilde (~
) öğesini kaldırın ve değerini uygulamanızın temel yoluyla değiştirin:- <base href="~/" /> + <base href="/" />
Bileşen için Bileşen Etiketi Yardımcısı'nı HeadOutlet kaldırın ve bileşeniyle HeadOutlet değiştirin.
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" />
Bileşen için Bileşen Etiketi Yardımcısı'nı
App
kaldırın ve bileşeniyleRoutes
değiştirin.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" />
Not
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 kullanıcı arabirimi için Ortam 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> }
Betiği olarak Blazor
blazor.server.js
blazor.web.js
değiştirin:- <script src="_framework/blazor.server.js"></script> + <script src="_framework/blazor.web.js"></script>
Pages/_Host.cshtml
Dosyayı silin.Güncelleştirme
Program.cs
:Not
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;
öğesini ve öğesini zincirleme bir çağrısıyla AddInteractiveServerComponentsAddRazorComponents değiştirinAddServerSideBlazor.
Aşağıdaki satırı kaldırın:
- builder.Services.AddServerSideBlazor();
Önceki satırı bileşen ve etkileşimli sunucu bileşen hizmetleriyle Razor değiştirin. Çağrılması AddRazorComponents varsayılan olarak kötü amaçlı yazılımdan koruma hizmetleri (AddAntiforgery) ekler.
builder.Services.AddRazorComponents() .AddInteractiveServerComponents();
Aşağıdaki satırı kaldırın:
- app.MapBlazorHub();
Yukarıdaki satırı, bileşeni kök bileşen türü olarak sağlayan
App
çağrısıyla MapRazorComponentsdeğiştirin ve öğesine AddInteractiveServerRenderModezincirlenmiş 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();
HTTPS Yeniden Yönlendirme Ara Yazılımı (
app.UseHttpsRedirection
):app.UseAntiforgery();
Yukarıdaki çağrısı
app.UseAntiforgery
, varsaapp.UseAuthentication
veapp.UseAuthorization
çağrılarının ardından yerleştirilmelidir. Önceden ele alınan tarafından otomatik AddRazorComponentsolarak eklendiğinden, açıkça kötü amaçlı yazılımdan koruma hizmetleri (builder.Services.AddAntiforgery
eklemeye gerek yoktur.Blazor Server Uygulama, ön kayıt işlemini devre dışı bırakmak üzere yapılandırılmışsa, güncelleştirilmiş uygulama için ön oturum açma özelliğini devre dışı bırakmaya devam edebilirsiniz. bileşeninde
App
veRoutes
bileşenleri için HeadOutlet yönerge özniteliklerine@rendermode
Razor atanan değeri değiştirin.Ön kayıt özelliğini devre dışı bırakmak için hem ve HeadOutlet
Routes
bileşenleri için yönerge özniteliğinin değerini@rendermode
değiştirin:- @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, webcil derleme paketlemesinin benimsenmesini yansıtmak Blazor WebAssemblyiçin dosya uzantısını .dll
.wasm
uygulamanın uygulamasında olarak 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 bir uygulamayı bir uygulamaya dönüştürme Blazor Web App
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>
.Client
Ayrıca proje dosyasında paket başvuruyuMicrosoft.AspNetCore.Components.WebAssembly.DevServer
kaldırın:- <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer"... />
Dosya içeriğini dosyadan
.Client/wwwroot/index.html
projenin kökünde.Server
oluşturulan yeniApp
bir bileşen dosyasına (App.razor
) taşıyın. Dosyanın içeriğini taşıdıktan sonra dosyayı silinindex.html
.Projede
Routes.razor
olarak yeniden adlandırın.App.razor
.Client
içinde
Routes.razor
özniteliğininAppAssembly
değerini olaraktypeof(Program).Assembly
güncelleştirin.Projede
.Client
, uygulamada kısa işleme modlarını kullanılabilir hale getirmek için dosyaya bir giriş_Imports.razor
ekleyin:@using static Microsoft.AspNetCore.Components.Web.RenderMode
Proje dosyasının
.Client
bir kopyasını oluşturup projeye ekleyin.Server
._Imports.razor
Dosyada aşağıdaki değişiklikleri
App.razor
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şen yerleştirin (ön kayıt 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)" />
Betiği olarak
blazor.web.js
güncelleştirinblazor.webassembly.js
:- <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 ({TITLE}
yer tutucu) sahip bir PageTitle bileşen ekleyin:<PageTitle>{TITLE}</PageTitle>
Not
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 baş içeriği denetleme.
aşağıdaki satırları uygulamasından
.Client/Program.cs
kaldırın:- builder.RootComponents.Add<App>("#app"); - builder.RootComponents.Add<HeadOutlet>("head::after");
Güncelleştirme
.Server/Program.cs
:Projeye bileşen ve etkileşimli WebAssembly bileşen hizmetleri ekleyin Razor . zincirlenmiş AddRazorComponents çağrısı ile çağrısı.AddInteractiveWebAssemblyComponents Çağrılması AddRazorComponents varsayılan olarak kötü amaçlı yazılımdan koruma hizmetleri (AddAntiforgery) ekler.
builder.Services.AddRazorComponents() .AddInteractiveWebAssemblyComponents();
İstek işleme işlem hattına Antiforgery Ara Yazılımı ekleyin.
çağrısından
app.UseHttpsRedirection
sonra aşağıdaki satırı yerleştirin. çağrısıapp.UseAntiforgery
, varsaapp.UseAuthentication
veapp.UseAuthorization
çağrılarının ardından yerleştirilmelidir. Önceden ele alınan tarafından otomatik AddRazorComponentsolarak eklendiğinden, açıkça kötü amaçlı yazılımdan koruma hizmetleri (builder.Services.AddAntiforgery
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 bileşeni sağlayan çağrısıyla MapRazorComponentsdeğiştirin ve ve AddAdditionalAssembliesöğesine AddInteractiveWebAssemblyRenderMode zincirlenmiş çağrılar ekleyin:
App
app.MapRazorComponents<App>() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof({CLIENT APP NAMESPACE}._Imports).Assembly);
Yukarıdaki örnekte yer tutucu projenin
{CLIENT APP NAMESPACE}
ad alanıdır.Client
(örneğin,HostedBlazorApp.Client
).Çözümü projeden
.Server
çalıştırın:Visual Studio için, uygulamayı çalıştırırken projenin Çözüm Gezgini'de seçili olduğunu
.Server
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 s sürümüyle Blazor Web Appbirlikte, hizmet ve uç nokta seçeneği yapılandırması, Blazor etkileşimli bileşen hizmetleri ve bileşen uç noktası yapılandırması için yeni API'nin kullanıma sunulmasıyla güncelleştirilir.
Güncelleştirilmiş yapılandırma kılavuzu aşağıdaki konumlarda görünür:
- Uygulamanın ortamını ayarlama ve okuma: Özellikle ortamında istemci tarafı Blazor Web Appokuma başlıklı bölümde güncelleştirilmiş kılavuz içerir.
- 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 kayıt: ile
RegisterCustomElement
kök bileşen özel öğe kaydını kapsar. - Varlıklar için Blazor WebAssembly ön ek: Yol dizesinin varlıkların ön ekini Blazor WebAssembly gösteren denetimini kapsar.
- Geçici yeniden yönlendirme URL'si geçerlilik süresi: Sunucu tarafı işleme tarafından Blazor yayılan geçici yeniden yönlendirme URL'leri için veri koruma geçerlilik süresinin denetimini 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 kayıt varsayılan olarak s için Blazor Web Appetkindir. 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önlendirmesi ile bırakma Blazor Server geçici çözümü
Daha önce Yarp ile bir Blazor Server uygulamayı .NET 6 veya .NET 7'ye geçirmek için Artımlı geçişte Yarp ile ASP.NET Core Blazor Server desteğini etkinleştirme başlığı altında yer alan yönergeleri izlediyseniz, makalenin yönergelerini takip ederken uyguladığınız geçici çözüm adımlarını tersine çevirebilirsiniz. Yarp ile yönlendirme ve derin bağlantı Blazor Server .NET 8'de düzgün çalışır.
Düzen bileşenlerindeki bileşenleri geçirme CascadingValue
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ı bir değer olarak geçirin. Daha fazla bilgi için bkz . Kök düzeyinde basamaklı değerler.
- Yönlendiriciyi
Routes
bileşenle birlikte bileşene sarınCascadingValue
Routes
ve bileşeni etkileşimli olarak işleyin. 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ırakmayan ve .NET 7 veya önceki sürümleri hedefleyen ancak .NET 8 SDK'sı ile oluşturulan uygulamalar için Blazor WebAssembly MSBuild BlazorEnableCompression
özelliği olarak CompressionEnabled
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 edinmek için aşağıdaki kaynaklara bakın:
- Statik Web Varlıkları Sıkıştırma Bayrağı Hataya Neden Olan Değişiklik (dotnet/duyurular #283)
- ASP.NET Core Blazor WebAssembly barındırma ve dağıtma
<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, dosyada Program
arayarak AddCascadingAuthenticationState hizmet koleksiyonuna basamaklı kimlik doğrulama durumu hizmetleri ekleyin:
builder.Services.AddCascadingAuthenticationState();
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- ASP.NET Core Blazor kimlik doğrulaması ve yetkilendirme makalesi
- Güvenli ASP.NET Core sunucu tarafı Blazor uygulamaları
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 (statik SSR) ile sınıf kitaplıklarında Razor (RCL) bileşen kitaplığı yazma konusunu ele alan yeni bir makale ekledik.
Daha fazla bilgi için bkz. statik sunucu tarafı işleme (statik SSR) ile ASP.NET Çekirdek Razor sınıf kitaplıkları (KCL'ler).
Ek derlemelerden bileşenleri bulma
Bir uygulamadan uygulamasına Blazor Server Blazor Web Appgeçiş yaparken, uygulama bileşen sınıfı kitaplıkları gibi ek derlemelerden yönlendirilebilir bileşenler kullanıyorsa ASP.NET Çekirdek Blazor yönlendirme ve gezinti kılavuzuna erişin.
Parametre bir sorgu dizesinden sağlandığında drop [Parameter]
özniteliği
[Parameter]
Sorgu dizesinden bir parametre sağlanırken özniteliği artık gerekli değildir:
- [Parameter]
[SupplyParameterFromQuery]
Blazor Server betik geri dönüş ilkesi yetkilendirmesi
.NET 7'de betik Blazor Server (blazor.server.js
) Statik Dosyalar Ara Yazılımı tarafından sunulur. .NET 7 uygulamalarında Yetkilendirme Ara Yazılımı () çağrısından önce statik dosyalar ara yazılımının (UseStaticFilesUseAuthorization) istek işleme işlem hattına yerleştirilmesi, betiği anonim kullanıcılara sunmak Blazor için yeterlidir.
.NET 8'de betik, Blazor Server uç nokta yönlendirmesi kullanılarak kendi uç noktası tarafından sunulur. Bu değişiklik, Düzeltildi hatası - UseStaticFiles kesmelerine Blazor Server geçiş seçenekleri (dotnet/aspnetcore
#45897) tarafından 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 isteklerin kimliği, istek sorumlusuna ek identity bir kimlik doğrulama düzeniyle doğrulanır.
- Geri dönüş yetkilendirme ilkesi, ek identityaracılığıyla talepleri denetleyebilen gereksinimlere sahiptir.
Betik dosyası (blazor.server.js
) istekleriBlazor, çerçevede /_framework/blazor.server.js
sabit kodlanmış konumunda 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, Şu anda Kasım 2024'te .NET 9 sürümü için zamanlanmış olan FallbackPolicy RequireAuthenticatedUser (dotnet/aspnetcore
51836) ile bozuk MapRazorComponents'teki yeni bir çerçeve özelliği için 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]
Dosyanın içindeki özniteliğini_Imports.razor
uygulayarak uygulamanın tüm bileşenlerine uygulayın. Uç nokta olmayanlarblazor için açıkça veyaRequireAuthorization
kullanın[Authorize]
.Dosyadaki
/_framework/blazor.server.js
uç noktayaProgram
ekleyin[AllowAnonymous]
:app.MapBlazorHub().Add(endpointBuilder => { if (endpointBuilder is RouteEndpointBuilder { RoutePattern: { RawText: "/_framework/blazor.server.js" } }) { endpointBuilder.Metadata.Add(new AllowAnonymousAttribute()); } });
Dosyasının üzerinden geçmesine izin vermek
/_framework/blazor.server.js
için öğesiniHttpContext
denetleen bir özelAuthorizationHandler
kayıt yapın.
Docker
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için Dockerfile FROM
deyimlerini ve betiklerini güncelleştirin. ASP.NET Core 8.0 çalışma zamanını içeren bir temel görüntü kullanın. ASP.NET Core 7.0 ile 8.0 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 bkz.
- Varsayılan ASP.NET Core bağlantı noktası 80'den 8080'e değiştirildi.
- Yalnızca ile bağlantı noktalarını belirtin
ASPNETCORE_HTTP_PORTS
Hataya neden olan değişiklikleri gözden geçirme
.NET Core .NET 7.0 ile 8.0 arasında hataya neden olan değişiklikler için bkz. ASP.NET Core ve Entity Framework Core bölümlerini içeren .NET 8'de hataya neden olan değişiklikler.
ASP.NET Core