.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 MVC veya Razor Pages ile 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 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.
- 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 (
_Host
) içeriğiPages/_Host.cshtml
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
tilde (<base>
) öğ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 AddServerSideBlazorAddRazorComponents değiştirinAddInteractiveServerComponents.
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 MapRazorComponents çağrısıyla
App
değ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 otomatikbuilder.Services.AddAntiforgery
olarak eklendiğinden, açıkça kötü amaçlı yazılımdan koruma hizmetleri (AddRazorComponents 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
ve@rendermode
bileşenleri için Razor yönerge özniteliklerine HeadOutletRoutes
atanan değeri değiştirin.Ön kayıt özelliğini devre dışı bırakmak için hem ve
@rendermode
HeadOutlet bileşenleri için yönerge özniteliğinin değeriniRoutes
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.dll
yansıtmak .wasm
için dosya uzantısını Blazor WebAssembly 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ündeApp
oluşturulan yeniApp.razor
bir bileşen dosyasına (.Server
) taşıyın. Dosyanın içeriğini taşıdıktan sonra dosyayı silinindex.html
.Projede
App.razor
olarak yeniden adlandırın..Client
Routes.razor
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_Imports.razor
..Server
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.webassembly.js
güncelleştirinblazor.web.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 (PageTitleyer tutucu) sahip bir{TITLE}
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 otomatikbuilder.Services.AddAntiforgery
olarak eklendiğinden, açıkça kötü amaçlı yazılımdan koruma hizmetleri (AddRazorComponents 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
App
öğesine AddInteractiveWebAssemblyRenderMode zincirlenmiş çağrılar ekleyin:AddAdditionalAssembliesapp.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
.Server
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 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.
- Razor bileşenleri işleme: 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. - Blazor WebAssembly için ö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şteBlazor Serverizlediyseniz, 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 AddCascadingAuthenticationState arayarak Program
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
- ASP.NET Core 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 (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 ServerBlazor 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 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.
Betik dosyası (Blazor) istekleriblazor.server.js
, ç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. Blazor olmayan uç noktalar için açıkça[Authorize]
veyaRequireAuthorization
kullanın.Dosyadaki
[AllowAnonymous]
uç noktaya/_framework/blazor.server.js
ekleyinProgram
: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
AuthorizationHandler
için öğesiniHttpContext
denetleen bir özel/_framework/blazor.server.js
kayıt yapın.
Docker
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için DockerfileFROM
. 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