ASP.NET Core 3.1'den 5.0'a geçiş
Bu makalede, mevcut bir ASP.NET Core 3.1 projesinin ASP.NET Core 5.0'a nasıl güncelleştirilecekleri açıklanmaktadır. ASP.NET Core 3.1'den ASP.NET Core 6.0'a geçiş hakkında yönergeler için bkz . ASP.NET Core 3.1'den 6.0'a geçiş.
Önkoşullar
- Visual Studio 2019 16.8 ve üzeri ile ASP.NET ve web geliştirme iş yükü
- .NET 5.0 SDK
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 dosyaya güveniyorsanız, özelliğini yüklü .NET 5.0 SDK sürümüne güncelleştirin version
. Örneğin:
{
"sdk": {
- "version": "3.1.200"
+ "version": "5.0.100"
}
}
Hedef çerçeveyi güncelleştirme
Bir Blazor WebAssembly projeyi güncelleştiriyorsanız Projeleri güncelleştir Blazor WebAssembly bölümüne atlayın. Diğer ASP.NET Core proje türleri için proje dosyasının Target Framework Moniker'ini (TFM) olarak net5.0
güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
Silme bin
ve obj
klasörler
ve obj
klasörlerini bin
silmeniz gerekebilir. NuGet paket önbelleğini temizlemek için komutunu çalıştırın dotnet nuget locals --clear all
.
Blazor 5.0.1 ve daha sonraki 5.x sürümlerinde uygulama yönlendirme mantığındaki değişiklikler 6.0'a kadar yayınlar
ASP.NET Core 5.0.1 yama sürümünde yol önceliği hesaplaması değişti. İsteğe bağlı parametrelerle tümünü yakala yolları veya yolları tanımladıysanız bu durum sizi etkileyebilir.
Eski davranış
ASP.NET Core 5.0.0 veya önceki sürümlerinde önceki davranışlarla, gibi {*slug}
daha düşük önceliğe sahip yollar, gibi /customer/{id}
daha yüksek önceliğe sahip yollardan önce eşleştirilir.
Yeni davranış
ASP.NET Core 5.0.1 veya sonraki sürümlerindeki yeni davranış, ASP.NET Core uygulamalarında tanımlanan yönlendirme davranışıyla yakından eşleşir; burada çerçeve her segment için önce yol önceliğini hesaplar ve oluşturur ve yalnızca ikincil ölçüt olarak bağlantıları kesmek için yolun uzunluğunu kullanır.
Değişiklik nedeni
Yönlendirme sisteminin yönlendirme tarafından Blazor desteklenen özelliklerin alt kümesi için Blazor ASP.NET Core yönlendirme sistemiyle aynı şekilde davranması hedeflendiğinden, özgün davranış uygulamada bir hata olarak kabul edilir.
Önerilen eylem
PreferExactMatches
Doğru davranışı kabul etmek için Router
özniteliğini dosyadaki App.razor
bileşene ekleyin:
<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
PreferExactMatches
olarak ayarlandığında@true
, yol eşleştirme joker karakterler yerine tam eşleşmeleri tercih eder.
Önemli
Tüm uygulamalar açıkça olarak @true
olarak ayarlanmalıdırPreferExactMatches
.
olarak ayarlanabilir PreferExactMatches
@false
veya ayarsız bırakılamaz, yalnızca geriye dönük uyumluluk için sağlanır.
.NET 6 yayınlandığında yönlendirici her zaman tam eşleşmeleri tercih eder ve PreferExactMatches
seçenek kullanılamaz.
Güncelleştirme Blazor WebAssembly ve Blazor Server projeler
Bu bölümdeki yönergeler her iki barındırma modeli için de Blazor geçerlidir. Bu bölümü izleyen bölümler, modelleri ve uygulama türlerini barındırmaya özgü ek yönergeler sağlar. İlgili tüm bölümlerdeki kılavuzu uygulamanıza uygulayın.
Bir
wwwroot/index.html
Blazor WebAssembly uygulamanın veyaPages/_Host.cshtml
uygulamanın Blazor Server içindeki öğesine stiller için bir<link>
öğe<head>
ekleyin. Aşağıdaki<link>
öğehref
öznitelik değerlerinde yer tutucu{ASSEMBLY NAME}
, uygulamanın derleme adıdır.+<link href="{ASSEMBLY NAME}.styles.css" rel="stylesheet" />
Tek başına Blazor WebAssembly veya Blazor Server örnek:
+<link href="BlazorSample.styles.css" rel="stylesheet" />
Client
barındırılan Blazor WebAssembly çözüm örneği projesi:+<link href="BlazorSample.Client.styles.css" rel="stylesheet" />
Bileşen sanallaştırması için uygulamanın
_Imports.razor
dosyasına yeni bir ad alanı ekleyin. Microsoft.AspNetCore.Components.Web.Virtualization Aşağıdaki_Imports.razor
dosyalar, proje şablonlarından Blazor oluşturulan uygulamalarda varsayılan ad alanlarını gösterir. Yer tutucu{ASSEMBLY NAME}
, uygulamanın derleme adıdır.Blazor WebAssembly (
_Imports.razor
):@using System.Net.Http @using System.Net.Http.Json @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop @using {ASSEMBLY NAME} @using {ASSEMBLY NAME}.Shared
Blazor Server (
_Imports.razor
):@using System.Net.Http @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop @using {ASSEMBLY NAME} @using {ASSEMBLY NAME}.Shared
() bileşeninde
MainLayout
Shared/MainLayout.razor
, bileşenin HTML işaretlemesini özniteliği olarak ayarlanmışpage
birclass
öğeyle<div>
çevreleyin:<div class="page"> ... </div>
Klasöre aşağıdaki dosyaları
Shared
ekleyin:MainLayout.razor.css
:.page { position: relative; display: flex; flex-direction: column; } .main { flex: 1; } .sidebar { background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); } .top-row { background-color: #f7f7f7; border-bottom: 1px solid #d6d5d5; justify-content: flex-end; height: 3.5rem; display: flex; align-items: center; } .top-row ::deep a, .top-row .btn-link { white-space: nowrap; margin-left: 1.5rem; } .top-row a:first-child { overflow: hidden; text-overflow: ellipsis; } @media (max-width: 767.98px) { .top-row:not(.auth) { display: none; } .top-row.auth { justify-content: space-between; } .top-row a, .top-row .btn-link { margin-left: 0; } } @media (min-width: 768px) { .page { flex-direction: row; } .sidebar { width: 250px; height: 100vh; position: sticky; top: 0; } .top-row { position: sticky; top: 0; z-index: 1; } .main > div { padding-left: 2rem !important; padding-right: 1.5rem !important; } }
NavMenu.razor.css
:.navbar-toggler { background-color: rgba(255, 255, 255, 0.1); } .top-row { height: 3.5rem; background-color: rgba(0,0,0,0.4); } .navbar-brand { font-size: 1.1rem; } .oi { width: 2rem; font-size: 1.1rem; vertical-align: text-top; top: -2px; } .nav-item { font-size: 0.9rem; padding-bottom: 0.5rem; } .nav-item:first-of-type { padding-top: 1rem; } .nav-item:last-of-type { padding-bottom: 1rem; } .nav-item ::deep a { color: #d7d7d7; border-radius: 4px; height: 3rem; display: flex; align-items: center; line-height: 3rem; } .nav-item ::deep a.active { background-color: rgba(255,255,255,0.25); color: white; } .nav-item ::deep a:hover { background-color: rgba(255,255,255,0.1); color: white; } @media (min-width: 768px) { .navbar-toggler { display: none; } .collapse { /* Never collapse the sidebar for wide screens */ display: block; } }
Bir uygulamanın en son temel
wwwroot/css/app.css
dosyası Blazor WebAssembly veyawwwroot/css/site.css
bir Blazor Server uygulamanın dosyası aşağıdaki stilleri içerir. Aşağıdaki stilleri ve uygulamaya eklediğiniz stilleri bırakarak ek stilleri kaldırın.Aşağıdaki stil sayfası yalnızca temel stilleri içerir ve geliştirici tarafından eklenen özel stilleri içermez :
html, body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; } a, .btn-link { color: #0366d6; } .btn-primary { color: #fff; background-color: #1b6ec2; border-color: #1861ac; } .content { padding-top: 1.1rem; } .valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; } .invalid { outline: 1px solid red; } .validation-message { color: red; } #blazor-error-ui { background: lightyellow; bottom: 0; box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); display: none; left: 0; padding: 0.6rem 1.25rem 0.7rem 1.25rem; position: fixed; width: 100%; z-index: 1000; } #blazor-error-ui .dismiss { cursor: pointer; position: absolute; right: 0.75rem; top: 0.5rem; }
Not
Yukarıdaki örnekte proje şablonu tarafından sağlanan Open Iconic simgeleri ()
open-iconic-bootstrap.css
yönergesi Blazor gösterilmez@import
. Open Iconic , bakımcıları tarafından terk edildi.
Projeleri güncelleştirme Blazor WebAssembly
Önceki Güncelleştirme Blazor WebAssembly ve Blazor Server projeler bölümündeki yönergeleri izleyin.
Barındırılan Blazor çözümün Client
projesi de dahil olmak üzere bir Blazor WebAssembly proje için proje dosyasına aşağıdaki değişiklikleri uygulayın:
SDK'yi olarak
Microsoft.NET.Sdk.Web
Microsoft.NET.Sdk.BlazorWebAssembly
güncelleştirin:- <Project Sdk="Microsoft.NET.Sdk.Web"> + <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
Not
Bu güncelleştirme yalnızca tek başına Blazor WebAssembly projeler ve barındırılan Blazor çözümlerin
Client
projeleri için geçerlidir.Aşağıdaki özellikleri güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> <PropertyGroup> - <TargetFramework>netstandard2.1</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Microsoft.AspNetCore.Components.WebAssembly.Build için paket başvurularını kaldırın:
<ItemGroup> - <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" />
Diğer paketleri en son sürümlerine güncelleştirin. En son sürümler NuGet.org bulunabilir.
içinde
wwwroot/index.html
, bileşeni olarak ayarlanmış bir<div>
öğeye yükleyenApp
öğeyiid
app
değiştirin:-<app>Loading...</app> +<div id="app">Loading...</div>
içinde
Program.Main
(Program.cs
içinde, öğesine bir karma#
ekleyerek css seçicisine başvuruyu<app>
değiştirin:-builder.RootComponents.Add<App>("app"); +builder.RootComponents.Add<App>("#app");
(
Program.cs
) içindeProgram.Main
, varsa varsayılan geçiciHttpClient
kaydı kapsamlı olarak değiştirin:-builder.Services.AddTransient(sp => new HttpClient - { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddScoped(sp => new HttpClient + { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
Barındırılan
Program.Main
Client
Blazor çözümler uygulamasının (Program.cs
) içinde:- İsteğe bağlı olarak, dize istemci temel adresleri yerine kullanın
builder.HostEnvironment.BaseAddress
. - Adlandırılmış geçici istemci fabrikası kayıtlarını kapsamlı olarak değiştirin.
-builder.Services.AddHttpClient("{APP NAMESPACE}.ServerAPI", - client => client.BaseAddress = new Uri("https://localhost:5001")) - .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>(); -builder.Services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>() - .CreateClient("{APP NAMESPACE}.ServerAPI")); +builder.Services.AddHttpClient("{APP NAMESPACE}.ServerAPI", + client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)) + .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>(); +builder.Services.AddScoped(sp => sp.GetRequiredService<IHttpClientFactory>() + .CreateClient("{APP NAMESPACE}.ServerAPI"));
Önceki kodda
{APP NAMESPACE}
yer tutucu, uygulamanın ad alanıdır.- İsteğe bağlı olarak, dize istemci temel adresleri yerine kullanın
Microsoft Hesapları ile tek başına Blazor WebAssembly uygulama
Önceki Güncelleştirme ve projeler ile Blazor Server Projeleri güncelleştir Blazor WebAssembly Blazor WebAssembly bölümlerindeki yönergeleri izleyin.
Microsoft Hesapları için Microsoft Entra Id (ME-ID) kullanmak üzere Azure portalında kayıtlı tek başına Blazor WebAssembly bir uygulama için:
Uygulama için ve
offline_access
kapsamları gerekiropenid
:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
Azure portalı uygulama kaydı Kimlik doğrulaması dikey penceresinde:
- Web platformu yapılandırmasını kaldırın.
- Uygulamanın yeniden yönlendirme URI'siyle tek sayfalı bir uygulama platformu yapılandırması ekleyin.
- Erişim belirteçleri ve kimlik belirteçleri için örtük izni devre dışı bırakın.
Daha fazla bilgi için bkz . Microsoft Hesapları ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama.
Microsoft Entra ID (ME-ID) ile tek başına Blazor WebAssembly uygulama
Önceki Güncelleştirme ve projeler ile Blazor Server Projeleri güncelleştir Blazor WebAssembly Blazor WebAssembly bölümlerindeki yönergeleri izleyin.
Microsoft Entra Id (ME-ID) kullanmak üzere Azure portalında kayıtlı tek başına Blazor WebAssembly bir uygulama için:
Uygulama için kapsam gerekir
https://graph.microsoft.com/User.Read
:options.ProviderOptions.DefaultAccessTokenScopes .Add("https://graph.microsoft.com/User.Read");
Azure portalı uygulama kaydı Kimlik doğrulaması dikey penceresinde:
- Web platformu yapılandırmasını kaldırın.
- Uygulamanın yeniden yönlendirme URI'siyle tek sayfalı bir uygulama platformu yapılandırması ekleyin.
- Erişim belirteçleri ve kimlik belirteçleri için örtük izni devre dışı bırakın.
Daha fazla bilgi için bkz. Microsoft Entra ID ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama.
Azure Active Directory (AAD) B2C ile tek başına Blazor WebAssembly uygulama
Önceki Güncelleştirme ve projeler ile Blazor Server Projeleri güncelleştir Blazor WebAssembly Blazor WebAssembly bölümlerindeki yönergeleri izleyin.
Azure portalında kayıtlı tek başına Blazor WebAssembly bir uygulamanın Azure Active Directory (AAD) B2C'yi kullanması için:
Uygulama için ve
offline_access
kapsamları gerekiropenid
:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
Azure portalı uygulama kaydı Kimlik doğrulaması dikey penceresinde:
- Web platformu yapılandırmasını kaldırın.
- Uygulamanın yeniden yönlendirme URI'siyle tek sayfalı bir uygulama platformu yapılandırması ekleyin.
- Erişim belirteçleri ve kimlik belirteçleri için örtük izni devre dışı bırakın.
Daha fazla bilgi için bkz. Azure Active Directory B2C ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama.
Microsoft Entra Id (ME-ID) veya AAD B2C ile barındırılan Blazor WebAssembly uygulama
Önceki Güncelleştirme ve projeler ile Blazor Server Projeleri güncelleştir Blazor WebAssembly Blazor WebAssembly bölümlerindeki yönergeleri izleyin.
Client
Kullanıcı kimlik doğrulaması için AAD veya AAD B2C kullanan barındırılan Blazor bir çözümün uygulama kaydı, platform yapılandırması Azure Uygulaması tek sayfalı bir uygulama kullanmalıdır.
Azure portalı Client
uygulama kaydı Kimlik doğrulaması dikey penceresinde:
- Web platformu yapılandırmasını kaldırın.
- Uygulamanın yeniden yönlendirme URI'siyle tek sayfalı bir uygulama platformu yapılandırması ekleyin.
- Erişim belirteçleri ve kimlik belirteçleri için örtük izni devre dışı bırakın.
Daha fazla bilgi için bkz.
- Microsoft Entra ID ile barındırılan ASP.NET Core Blazor WebAssembly uygulamasının güvenliğini sağlama
- Azure Active Directory B2C ile barındırılan ASP.NET Core Blazor WebAssembly uygulamasının güvenliğini sağlama
Barındırılan Blazor çözümün Sunucu projesini güncelleştirme
Önceki bölümlerde yer alan yönergeleri izleyin:
- Güncelleştirme Blazor WebAssembly ve Blazor Server projeler
- Projeleri güncelleştirme Blazor WebAssembly
- Azure Active Directory ile uygulamanın sağlayıcısı için geçerli olan bölüm:
Bu makaledeki Server
genel yönergeleri izleyerek barındırılan Blazor çözümün projesini ASP.NET Core uygulaması olarak güncelleştirin.
Ayrıca, Server
Microsoft Entra ID (ME-ID) veya B2C ile istemci Blazor WebAssembly uygulamalarında kullanıcıların kimliğini doğrulayan projelerin yeni Microsoft Identity v2.0 paketlerini benimsemesi gerekir:
AAD için:
-<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="..." />
+<PackageReference Include="Microsoft.Identity.Web" Version="{VERSION}" />
+<PackageReference Include="Microsoft.Identity.Web.UI" Version="{VERSION}" />
AAD B2C için:
-<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="..." />
+<PackageReference Include="Microsoft.Identity.Web" Version="{VERSION}" />
+<PackageReference Include="Microsoft.Identity.Web.UI" Version="{VERSION}" />
Önceki paket başvuruları için, NuGet.org konumunda yer {VERSION}
tutucuların paket sürümlerini belirleyin:
Not
Barındırılan Blazor WebAssembly çözümdeki Server
projenin SDK'sı Microsoft.NET.Sdk.Web
kalır:
<Project Sdk="Microsoft.NET.Sdk.Web">
Daha fazla bilgi için bkz.
- Microsoft Entra ID ile barındırılan ASP.NET Core Blazor WebAssembly uygulamasının güvenliğini sağlama
- Azure Active Directory B2C ile barındırılan ASP.NET Core Blazor WebAssembly uygulamasının güvenliğini sağlama
Çözümü temizleme ve yeniden oluşturma
Uygulamayı veya çözümü .NET 5'e geçirdikten sonra, uygulamayı veya çözümü temizleyin ve yeniden oluşturun. Yeni paket başvuruları ile önbelleğe alınmış paketler arasında paket uyumsuzlukları varsa:
Komut kabuğunda aşağıdaki
dotnet nuget locals
komutu yürüterek NuGet paket önbelleklerini temizleyin:dotnet nuget locals --clear all
Uygulamayı veya çözümü temizleyin ve yeniden oluşturun.
Sorun giderme
Uygulamanız için geçerli olan güvenlik konusunun sonundaki Blazor WebAssembly Sorun giderme yönergelerini izleyin:
Tek başına Blazor WebAssembly uygulamaları:
- OIDC sağlayıcıları ve WebAssembly Kimlik Doğrulaması Kitaplığı için genel yönergeler
- Microsoft Hesapları
- Microsoft Entra Id (ME-ID)
- Azure Active Directory (AAD) B2C
Barındırılan Blazor WebAssembly uygulamaları:
Microsoft Entra ID (ME-ID) için yetkisiz istemci
Kimlik doğrulaması için AAD kullanan bir Blazor WebAssembly uygulamayı yükselttikten sonra, kullanıcı AAD ile oturum açtığında uygulamaya yapılan oturum açma geri çağırmasında aşağıdaki hatayı alabilirsiniz:
bilgi: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] Yetkilendirme başarısız oldu. Bu gereksinimler karşılanmadı: DenyAnonymousAuthorizationRequirement: Kimliği doğrulanmış bir kullanıcı gerektirir.
AAD'den oturum açma geri çağırma hatası:
- Hata:
unauthorized_client
- Açıklama:
AADB2C90058: The provided application is not configured to allow public clients.
Hatayı düzeltmek için:
- Azure portalında uygulamanın bildirimine erişin.
- özniteliğini
allowPublicClient
veyatrue
olaraknull
ayarlayın.
Blazor Aşamalı Web Uygulamasını (PWA) Güncelleştirme
PWA uygulamasının proje dosyasına aşağıdaki öğeyi ekleyin:
<ItemGroup>
<ServiceWorker Include="wwwroot\service-worker.js"
PublishedContent="wwwroot\service-worker.published.js" />
</ItemGroup>
Önizleme CSS yalıtım stil sayfası bağlantısını kaldırma
Projenin wwwroot/index.html
(Blazor WebAssembly) veya Pages/_Host.cshtml
(Blazor Server) önceki 5.0 önizleme sürümünden bir scoped.styles.css
stil sayfası <link>
öğesi içeriyorsa, etiketini kaldırın<link>
:
-<link href="_framework/scoped.styles.css/" rel="stylesheet" />
Sınıf kitaplıklarını (RCL' ler) güncelleştirme Razor
ASP.NET Core 5.0'ın bir parçası olarak sunulan yeni API'lerden veya özelliklerden yararlanmak için sınıf kitaplıklarını (RCL' ler) geçirin Razor .
Bileşenleri hedefleyen bir RCL'yi güncelleştirmek için:
Proje dosyasında aşağıdaki özellikleri güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Diğer paketleri en son sürümlerine güncelleştirin. En son sürümler NuGet.org bulunabilir.
MVC'yi hedefleyen bir RCL'yi güncelleştirmek için proje dosyasındaki aşağıdaki özellikleri güncelleştirin:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
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 5.0.0 veya üzeri sürümlere güncelleştirin. Örneğin:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="3.1.6" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.6">
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="3.1.6" />
- <PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="5.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0">
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>
Docker görüntülerini güncelleştirme
Docker kullanan uygulamalar için Dockerfile FROM
deyimlerinizi ve betiklerinizi güncelleştirin. ASP.NET Core 5.0 çalışma zamanını içeren bir temel görüntü kullanın. ASP.NET Core 3.1 ile 5.0 arasındaki aşağıdaki docker pull
komut farkını göz önünde bulundurun:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:5.0
Ürün adı olarak ".NET"e taşıma işleminin bir parçası olarak Docker görüntüleri depolardan mcr.microsoft.com/dotnet/core
öğesine mcr.microsoft.com/dotnet
taşındı. Daha fazla bilgi için bkz . dotnet/dotnet-docker#1939.
ASP.NET Core MVC ve Razor Sayfalarda model bağlama değişiklikleri
DateTime değerleri modele UTC saatleriyle bağlıdır
ASP.NET Core 3.1 ve önceki sürümlerinde değerler, DateTime
saat diliminin sunucu tarafından belirlendiği yerel saat olarak modele bağlıydı. DateTime
giriş biçimlendirmesinden (JSON) ve DateTimeOffset
değerlerden bağlanan değerler UTC saat dilimleri olarak bağlanıyordu.
ASP.NET Core 5.0 ve sonraki sürümlerinde model bağlama, değerleri UTC saat dilimiyle tutarlı bir şekilde bağlar DateTime
.
Önceki davranışı korumak için içindeki Startup.ConfigureServices
öğesini DateTimeModelBinderProvider
kaldırın:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider \ ComplexObjectModelBinder yerine ComplexTypeModelBinderProvider \ ComplexTypeModelBinder
Model bağlama C# 9 kayıt türleri için destek eklemek için şu şekildedir ComplexTypeModelBinderProvider :
- Modası geçmiş olarak notlar.
- Artık varsayılan olarak kaydedilmedi.
öğesinin koleksiyondaki ModelBinderProviders
varlığını ComplexTypeModelBinderProvider
kullanan uygulamaların yeni bağlayıcı sağlayıcısına başvurması gerekir:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage kullanımdan kaldırıldı
Tek tek kullanıcı hesapları için bir seçenek içeren ASP.NET Core 3.1 şablonları için UseDatabaseErrorPagebir çağrı oluşturur. UseDatabaseErrorPage
artık kullanım dışıdır ve aşağıdaki kodda gösterildiği gibi ve UseMigrationsEndPoint
birleşimiyle AddDatabaseDeveloperPageExceptionFilter
değiştirilmelidir:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
+ services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
+ app.UseMigrationsEndPoint();
- app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
Daha fazla bilgi için bu GitHub konusuna bakın.
ASP.NET Çekirdek Modülü (ANCM)
Visual Studio yüklenirken ASP.NET Çekirdek Modülü (ANCM) seçili bir bileşen değilse veya sistemde ANCM'nin önceki bir sürümü yüklüyse, en son .NET Core Barındırma Paketi Yükleyicisi'ni (doğrudan indirme) indirin ve yükleyiciyi çalıştırın. Daha fazla bilgi için bkz . Barındırma Paketi.
Bazı NuGet paketlerini etkileyen paket başvurusu değişiklikleri
Dotnet/extensions deposundaki bazı Microsoft.Extensions.*
NuGet paketlerinin dotnet/runtime'a geçirilmesiyle, dotnet/runtime ve dotnet/aspnetcore'a (aspnet/Announcements #411) dotnet/extensions içeriğini geçirme bölümünde açıklandığı gibi, geçirilen paketlerden bazılarına paketleme değişiklikleri uygulanır. Bu değişiklikler genellikle .NET API'sinde ad alanı değişiklikleriyle sonuçlanır.
5.0'a geçiş yaparken uygulama ad alanı değişikliklerine yönelik API'leri daha fazla araştırmak için .NET API tarayıcısını kullanın.
Microsoft'u geçir..Identity. Web
Aşağıdaki wiki sayfalarında Microsoft'un nasıl geçir yapılacağı açıklanmaktadır..Identity. ASP.NET Core 3.1'den 5.0'a web:
Aşağıdaki öğreticilerde geçiş işlemi de açıklanmaktadır:
- Kuruluşunuzdaki Microsoft identity platformuyla ASP.NET Core Web uygulaması oturum açma kullanıcıları. Bkz . Seçenek 2: Komut satırından örneği oluşturma.
- WPF Masaüstü uygulamasında Microsoft identity platformuyla bir kullanıcıda oturum açın ve ASP.NET Core Web API'sini çağırın. Bkz. Kod nasıl oluşturuldu?
Hataya neden olan değişiklikleri gözden geçirme
.NET Core 3.1'den .NET 5.0'a hataya neden olan değişiklikler için bkz . Sürüm 3.1'den 5.0'a geçiş için hataya neden olan değişiklikler. ASP.NET Core ve Entity Framework Core da listeye dahil edilir.
ASP.NET Core