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 6 projesinde var olan bir ASP.NET Core'un .NET 7'ye 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ıyorsanız, version
özelliğini yüklü olan .NET 7 SDK sürümüne güncelleştirin. Ö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
Bu makalenin önceki bölümlerinde bir uygulamayı .NET 7'ye güncelleştirme yönergelerini takip ettikten sonra, .NET 7'de ASP.NET Core'daki yenilikler başlığındaki bağlantıları izleyerek belirli özellikleri benimseyin.
UygulamalarBlazoryeni 7.0 özelliklerini benimsemek için 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 veya önceki sürümlerinde:
<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 yeniden yönlendirme URL'sini (RedirectToLogin.razor
) temel alan ve içinde ?returnUrl=
.NET 6 veya öncekiNavigateTo:
@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 RedirectToLogin.razor
içinde .NET 7 veya üstünü:
@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ı
@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 Shared/LoginDisplay.razor
yeni yaklaşımNavigateToLogout. öğesinin eklemesi @inject
(SignOutSessionStateManager) 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. .NET 7 çalışma zamanında ASP.NET Core içeren bir temel görüntü kullanın. .NET 6'da ASP.NET Core ile .NET 7 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 6'dan .NET 7'ye geçerken uyum sorunlarına yol açabilecek değişiklikler için bkz. .NET 7'deki köklü değişiklikler. ASP.NET Core ve Entity Framework Core listeye eklenir.
ASP.NET Core