ASP.NET Core 6.0'dan 7.0'a geçiş
Bu makalede, mevcut bir ASP.NET Core 6.0 projesinin ASP.NET Core 7.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 Core 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 7.0 SDK sürümüne güncelleştirin version
. Örneğin:
{
"sdk": {
- "version": "6.0.200"
+ "version": "7.0.100"
}
}
Hedef çerçeveyi güncelleştirme
Proje dosyasının Target Framework Takma Adını (TFM) olarak net7.0
güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net6.0</TargetFramework>
+ <TargetFramework>net7.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 7.0.0 veya üzeri sürümlere güncelleştirin. Örneğin:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.9" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.9" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="6.0.9" />
- <PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="7.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="7.0.0" />
</ItemGroup>
Blazor
.NET 7 özelliklerini benimseme
Bir uygulamayı 7.0'a güncelleştirmek için bu makalenin önceki bölümlerindeki yönergeleri takip ettikten sonra, ASP.NET Core 7.0'daki yenilikler başlığındaki bağlantıları izleyerek belirli özellikleri benimseyin.
Uygulamalar için tüm yeni 7.0 özelliklerini benimsemek için Blazor aşağıdaki işlemi öneririz:
- Proje şablonlarından birinden Blazor yeni bir 7.0 Blazor projesi oluşturun. Daha fazla bilgi için bkz . ASP.NET Core Blazoriçin Araçlar.
- Yeni 7.0 özelliklerini benimsemek için değişiklikler yaparak uygulamanın bileşenlerini ve kodunu 7.0 uygulamasına taşıyın.
Bileşen parametresi bağlamayı basitleştirme
Önceki Blazor sürümlerde, birden çok bileşen arasında bağlama, erişimcilerle get
/set
özelliklere bağlama gerektiriyor.
.NET 6 ve önceki sürümlerde:
<NestedGrandchild @bind-GrandchildMessage="BoundValue" />
@code {
...
private string BoundValue
{
get => ChildMessage ?? string.Empty;
set => ChildMessageChanged.InvokeAsync(value);
}
}
.NET 7'de, iki yönlü veri bağlamayı desteklemek ve bağlama söz dizimini basitleştirmek için yeni @bind:get
ve @bind:set
değiştiricileri kullanabilirsiniz:
<NestedGrandchild @bind-GrandchildMessage:get="ChildMessage"
@bind-GrandchildMessage:set="ChildMessageChanged" />
Daha fazla bilgi için Veri bağlama makalesindeki aşağıdaki içeriğe bakın:
Özetlenmemiş JavaScript birlikte çalışma geçişi
Arabirimi kullanan IJSUnmarshalledRuntime özetlenmemiş birlikte çalışma kullanım dışıdır ve JavaScript [JSImport]
/[JSExport]
birlikte çalışmasıyla değiştirilmelidir.
Daha fazla bilgi için bkz . JavaScript JSImport/JSExport ASP.NET Core Blazorile birlikte çalışma.
Blazor WebAssembly kimlik doğrulaması, yeniden yönlendirmeler için geçmiş durumunu kullanır
Uygulamalarda kimlik doğrulaması desteği, URL'deki Blazor WebAssembly sorgu dizeleri yerine gezinti geçmişi durumuna bağlı olacak şekilde değiştirildi. Sonuç olarak, .NET 7'de başarılı bir oturum açma işleminden sonra dönüş URL'sinin sorgu dizesi üzerinden geçirilmesi özgün sayfaya geri yönlendirilemiyor.
Aşağıdaki örnek, ile NavigateToyeniden yönlendirme URL'sini (?returnUrl=
) temel alan ve içinde RedirectToLogin.razor
.NET 6 veya önceki sürümleri hedefleyen uygulamalar için önceki yeniden yönlendirme yaklaşımını gösterir:
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@code {
protected override void OnInitialized()
{
Navigation.NavigateTo(
$"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");
}
}
Aşağıdaki örnek, ile gezinti geçmişi durumunu NavigateToLogin temel alan içinde .NET 7 veya üstünü RedirectToLogin.razor
hedefleyen uygulamalar için yeni yeniden yönlendirme yaklaşımını gösterir:
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Options
@inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> OptionsSnapshot
@code {
protected override void OnInitialized()
{
Navigation.NavigateToLogin(OptionsSnapshot.Get(Options.DefaultName).AuthenticationPaths.LogInPath);
}
}
Bu değişikliğin bir parçası olarak , SignOutSessionStateManager .NET 7 veya sonraki sürümlerinde kullanımdan kaldırılmış ve ile NavigateToLogoutdeğiştirilmiştir.
Aşağıdaki örnek, proje şablonundan oluşturulan bir uygulamanın önceki yaklaşımını Shared/LoginDisplay.razor
Blazor WebAssembly gösterir:
@inject SignOutSessionStateManager SignOutManager
...
@code{
private async Task BeginLogout(MouseEventArgs args)
{
await SignOutManager.SetSignOutState();
Navigation.NavigateTo("authentication/logout");
}
}
Aşağıdaki örnekte çağrısında NavigateToLogoutShared/LoginDisplay.razor
yeni yaklaşım gösterilmektedir. öğesinin eklemesi SignOutSessionStateManager (@inject
) dosyanın en üstündeki bileşenin yönergelerinden kaldırılır ve BeginLogOut
yöntemi aşağıdaki koda güncelleştirilir:
@code{
public void BeginLogOut()
{
Navigation.NavigateToLogout("authentication/logout");
}
}
Hizmet SignOutSessionStateManager kaydı içinde Program.cs
kaldırılır:
- builder.Services.AddScoped<SignOutSessionStateManager>();
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- [Hataya neden olan değişiklik]: Webassembly uygulamalarında Kimlik Doğrulaması güncelleştirmeleri
- ASP.NET Temel Blazor yönlendirme ve gezinti
- Güvenli ASP.NET Çekirdeği Blazor WebAssembly
- ASP.NET Core Blazor kimlik doğrulaması ve yetkilendirme
.NET 6 projeleri için .NET WebAssembly derleme araçları
Artık .NET 7 SDK ile çalışırken .NET WebAssembly derleme araçlarını bir .NET 6 projesiyle kullanabilirsiniz. Yeni wasm-tools-net6
iş yükü, .NET 7 SDK ile kullanılabilmesi için .NET 6 projeleri için .NET WebAssembly derleme araçlarını içerir. Mevcut wasm-tools
iş yükü ,NET 7 projeleri için .NET WebAssembly derleme araçlarını yükler. Ancak, .NET WebAssembly derleme araçlarının .NET 7 sürümü .NET 6 ile oluşturulan mevcut projelerle uyumsuz. .NET 6 ve .NET 7'yi desteklemesi gereken .NET WebAssembly derleme araçlarını kullanan projelerin çoklu hedefleme kullanması gerekir.
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için Dockerfile FROM
deyimlerinizi ve betiklerinizi güncelleştirin. ASP.NET Core 7.0 çalışma zamanını içeren bir temel görüntü kullanın. ASP.NET Core 6.0 ile 7.0 arasındaki aşağıdaki docker pull
komut farkını göz önünde bulundurun:
- docker pull mcr.microsoft.com/dotnet/aspnet:6.0
+ docker pull mcr.microsoft.com/dotnet/aspnet:7.0
Hataya neden olan değişiklikleri gözden geçirme
.NET Core 6.0'dan .NET 7.0'a hataya neden olan değişiklikler için bkz . .NET 7'de hataya neden olan değişiklikler. ASP.NET Core ve Entity Framework Core listeye eklenir.
ASP.NET Core