Migrace z ASP.NET Core 3.1 na 5.0
Tento článek vysvětluje, jak aktualizovat existující projekt ASP.NET Core 3.1 na ASP.NET Core 5.0. Pokyny k migraci z ASP.NET Core 3.1 na ASP.NET Core 6.0 najdete v tématu Migrace z ASP.NET Core 3.1 na 6.0.
Požadavky
- Sada Visual Studio 2019 16.8 nebo novější se sadou funkcí Vývoj pro ASP.NET a web
- Sada .NET 5.0 SDK
Aktualizace verze sady .NET Core SDK v global.json
Pokud spoléháte na global.json soubor, který má cílit na konkrétní verzi sady .NET Core SDK, aktualizujte version
vlastnost na nainstalovanou verzi sady .NET 5.0 SDK. Příklad:
{
"sdk": {
- "version": "3.1.200"
+ "version": "5.0.100"
}
}
Aktualizace cílové architektury
Pokud aktualizujete Blazor WebAssembly projekt, přejděte do části Aktualizovat Blazor WebAssembly projekty . V případě jakéhokoli jiného typu projektu ASP.NET Core aktualizujte moniker cílového rozhraní (TFM) souboru projektu nanet5.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
Odstranění bin
a obj
složky
Možná budete muset odstranit bin
složky a obj
složky. Spuštěním vymažte dotnet nuget locals --clear all
mezipaměť balíčků NuGet.
Blazor Změny logiky směrování aplikací ve verzi 5.0.1 a dalších verzích 5.x až 6.0
Výpočet priority trasy se změnil ve verzi opravy ASP.NET Core 5.0.1. To vás může ovlivnit, pokud jste definovali trasy catch-all nebo trasy s volitelnými parametry.
Staré chování
Při předchozím chování v ASP.NET Core 5.0.0 nebo starších trasách s nižší prioritou, například {*slug}
, se shodují před trasami s vyšší prioritou, například /customer/{id}
.
Nové chování
Nové chování ve službě ASP.NET Core 5.0.1 nebo novější blíže odpovídá chování směrování definované v aplikacích ASP.NET Core, kde architektura vypočítá a určí prioritu trasy pro každý segment jako první a použije délku trasy pouze k přerušení vazeb jako sekundárních kritérií.
Důvod změny
Původní chování se považuje za chybu v implementaci, protože naším cílem je Blazor , aby se systém směrování choval stejným způsobem jako systém směrování ASP.NET Core pro podmnožinu funkcí podporovaných směrováním Blazor .
Doporučená akce
PreferExactMatches
Přidejte atribut do Router
komponenty v App.razor
souboru, abyste se přihlásili ke správnému chování:
<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
Pokud PreferExactMatches
je nastavená hodnota @true
, porovnávání tras dává přednost přesným shodám oproti zástupným znakům.
Důležité
Všechny aplikace by měly explicitně nastavit PreferExactMatches
.@true
Možnost nastavit PreferExactMatches
@false
nebo ponechat nesmnožinu je poskytována pouze kvůli zpětné kompatibilitě.
Po vydání rozhraní .NET 6 bude směrovač vždy upřednostňovat přesné shody a PreferExactMatches
tato možnost nebude dostupná.
Aktualizace Blazor WebAssembly a Blazor Server projekty
Pokyny v této části platí pro oba Blazor modely hostování. V následujících částech najdete další pokyny specifické pro hostování modelů a typů aplikací. Použijte pokyny ze všech relevantních částí vaší aplikace.
Blazor WebAssembly V
wwwroot/index.html
aplikaci nebo Blazor ServerPages/_Host.cshtml
aplikaci přidejte<link>
prvek do elementu<head>
pro styly. V následujících<link>
hodnotách atributů elementuhref
je zástupný symbol{ASSEMBLY NAME}
názvem sestavení aplikace.+<link href="{ASSEMBLY NAME}.styles.css" rel="stylesheet" />
Blazor WebAssembly Samostatný nebo Blazor Server příklad:
+<link href="BlazorSample.styles.css" rel="stylesheet" />
Client
příklad hostovaného Blazor WebAssembly řešení:+<link href="BlazorSample.Client.styles.css" rel="stylesheet" />
Do souboru aplikace
_Imports.razor
pro virtualizaciMicrosoft.AspNetCore.Components.Web.Virtualization komponent zahrňte nový obor názvů. Následující_Imports.razor
soubory zobrazují výchozí obory názvů v aplikacích vygenerovaných ze Blazor šablon projektů. Zástupný symbol{ASSEMBLY NAME}
je název sestavení aplikace.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
V komponentě
MainLayout
(Shared/MainLayout.razor
) ohraničujte kód<div>
HTML komponenty elementemclass
, který má nastavený atribut:page
<div class="page"> ... </div>
Do složky přidejte následující soubory
Shared
: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; } }
Nejnovější základní
wwwroot/css/app.css
soubor Blazor WebAssembly aplikace nebowwwroot/css/site.css
souboru Blazor Server aplikace obsahuje následující styly. Odeberte nadbytečné styly a nechte následující styly a všechny, které jste přidali do aplikace.Následující šablona stylů obsahuje pouze základní styly a neobsahuje vlastní styly přidané vývojářem:
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; }
Poznámka:
Předchozí příklad nezobrazuje direktivu
@import
pro ikony Open Icon (open-iconic-bootstrap.css
), kterou Blazor poskytuje šablona projektu. Open Kultovní byl opuštěn svými správci.
Aktualizace Blazor WebAssembly projektů
Postupujte podle pokynů v předchozí části Aktualizace Blazor WebAssembly a Blazor Server projekty .
Blazor WebAssembly U projektu, včetně Client
projektu hostovaného Blazor řešení, použijte v souboru projektu následující změny:
Aktualizujte sadu SDK z
Microsoft.NET.Sdk.Web
:Microsoft.NET.Sdk.BlazorWebAssembly
- <Project Sdk="Microsoft.NET.Sdk.Web"> + <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
Poznámka:
Tato aktualizace se vztahuje pouze na samostatné Blazor WebAssembly projekty a
Client
projekty hostovaných Blazor řešení.Aktualizujte následující vlastnosti:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> <PropertyGroup> - <TargetFramework>netstandard2.1</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Odeberte odkaz na balíček Microsoft.AspNetCore.Components.WebAssembly.Build:
<ItemGroup> - <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" />
Aktualizujte další balíčky na nejnovější verze. Nejnovější verze najdete v NuGet.org.
V
wwwroot/index.html
, změnit prvek, který načteApp
komponentu do<div>
elementu s nastavenouid
naapp
:-<app>Loading...</app> +<div id="app">Loading...</div>
V
Program.Main
(Program.cs
) změňte odkaz na<app>
prvek na selektor CSS přidáním hodnoty hash#
do něj:-builder.RootComponents.Add<App>("app"); +builder.RootComponents.Add<App>("#app");
V
Program.Main
(Program.cs
) změňte výchozí přechodnouHttpClient
registraci na vymezenou, pokud existuje:-builder.Services.AddTransient(sp => new HttpClient - { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddScoped(sp => new HttpClient + { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
V
Program.Main
(Program.cs
)Client
aplikaci hostovaných Blazor řešení:- Volitelně můžete nahradit
builder.HostEnvironment.BaseAddress
řetězcové základní adresy klienta. - Změňte všechny pojmenované přechodné registrace klientské továrny na vymezený obor.
-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"));
V předchozím kódu
{APP NAMESPACE}
je zástupný symbol obor názvů aplikace.- Volitelně můžete nahradit
Samostatná Blazor WebAssembly aplikace s účty Microsoft
Postupujte podle pokynů v předchozích částech Aktualizace Blazor WebAssembly a Blazor Server projekty a Aktualizace Blazor WebAssembly projektů .
Pro samostatnou Blazor WebAssembly aplikaci zaregistrovanou na webu Azure Portal pro použití Microsoft Entra ID (ME-ID) pro účty Microsoft:
Aplikace vyžaduje obory
openid
aoffline_access
obory:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
V okně Ověřování registrace aplikace na webu Azure Portal:
- Odeberte konfiguraci webové platformy.
- Přidejte konfiguraci jednostrákové aplikační platformy pomocí identifikátoru URI přesměrování aplikace.
- Zakažte implicitní udělení přístupových tokenů a tokenů ID.
Další informace najdete v tématu Zabezpečení samostatné aplikace ASP.NET Core Blazor WebAssembly pomocí účtů Microsoft.
Samostatná Blazor WebAssembly aplikace s Microsoft Entra ID (ME-ID)
Postupujte podle pokynů v předchozích částech Aktualizace Blazor WebAssembly a Blazor Server projekty a Aktualizace Blazor WebAssembly projektů .
Pro samostatnou Blazor WebAssembly aplikaci zaregistrovanou na webu Azure Portal pro použití MICROSOFT Entra ID (ME-ID):
Aplikace vyžaduje
https://graph.microsoft.com/User.Read
obor:options.ProviderOptions.DefaultAccessTokenScopes .Add("https://graph.microsoft.com/User.Read");
V okně Ověřování registrace aplikace na webu Azure Portal:
- Odeberte konfiguraci webové platformy.
- Přidejte konfiguraci jednostrákové aplikační platformy pomocí identifikátoru URI přesměrování aplikace.
- Zakažte implicitní udělení přístupových tokenů a tokenů ID.
Další informace najdete v tématu Zabezpečení samostatné aplikace ASP.NET Core Blazor WebAssembly pomocí Microsoft Entra ID.
Samostatná Blazor WebAssembly aplikace s Azure Active Directory (AAD) B2C
Postupujte podle pokynů v předchozích částech Aktualizace Blazor WebAssembly a Blazor Server projekty a Aktualizace Blazor WebAssembly projektů .
Pro samostatnou Blazor WebAssembly aplikaci zaregistrovanou na webu Azure Portal pro použití Azure Active Directory (AAD) B2C:
Aplikace vyžaduje obory
openid
aoffline_access
obory:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
V okně Ověřování registrace aplikace na webu Azure Portal:
- Odeberte konfiguraci webové platformy.
- Přidejte konfiguraci jednostrákové aplikační platformy pomocí identifikátoru URI přesměrování aplikace.
- Zakažte implicitní udělení přístupových tokenů a tokenů ID.
Další informace najdete v tématu Zabezpečení samostatné aplikace ASP.NET Core Blazor WebAssembly pomocí Azure Active Directory B2C.
Hostovaná Blazor WebAssembly aplikace s Microsoft Entra ID (ME-ID) nebo AAD B2C
Postupujte podle pokynů v předchozích částech Aktualizace Blazor WebAssembly a Blazor Server projekty a Aktualizace Blazor WebAssembly projektů .
Registrace Client
aplikace hostovaného Blazor řešení, které pro ověřování uživatelů používá AAD nebo AAD B2C, by měla používat jednostrákovou aplikaci Aplikace Azure s konfiguraci platformy.
V okně Ověřování registrace aplikace na webu Azure PortalClient
:
- Odeberte konfiguraci webové platformy.
- Přidejte konfiguraci jednostrákové aplikační platformy pomocí identifikátoru URI přesměrování aplikace.
- Zakažte implicitní udělení přístupových tokenů a tokenů ID.
Další informace naleznete v tématu:
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí ID Microsoft Entra
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí Azure Active Directory B2C
Aktualizace projektu serveru hostovaného Blazor řešení
Postupujte podle pokynů v předchozích částech:
- Aktualizace Blazor WebAssembly a Blazor Server projekty
- Aktualizace Blazor WebAssembly projektů
- Část, která se vztahuje na poskytovatele aplikace s Azure Active Directory:
Server
Aktualizujte projekt hostovaného Blazor řešení jako aplikaci ASP.NET Core podle obecných pokynů v tomto článku.
Kromě toho by projekty, které ověřují uživatele v klientských Blazor WebAssembly aplikacích pomocí MICROSOFT Entra ID (ME-ID) nebo B2C, Server
měly přijímat nové balíčky Microsoftu Identity v2.0:
Pro AAD:
-<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="..." />
+<PackageReference Include="Microsoft.Identity.Web" Version="{VERSION}" />
+<PackageReference Include="Microsoft.Identity.Web.UI" Version="{VERSION}" />
Pro AAD B2C:
-<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="..." />
+<PackageReference Include="Microsoft.Identity.Web" Version="{VERSION}" />
+<PackageReference Include="Microsoft.Identity.Web.UI" Version="{VERSION}" />
U předchozích odkazů na balíčky určete verze balíčků pro {VERSION}
zástupné symboly v NuGet.org:
Poznámka:
Sada SDK Server
projektu v hostovaném Blazor WebAssembly řešení zůstává Microsoft.NET.Sdk.Web
:
<Project Sdk="Microsoft.NET.Sdk.Web">
Další informace naleznete v tématu:
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí ID Microsoft Entra
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí Azure Active Directory B2C
Vyčištění a opětovné sestavení řešení
Po migraci aplikace nebo řešení do .NET 5 vyčistěte a znovu sestavte aplikaci nebo řešení. Pokud mezi novými odkazy na balíčky a balíčky uloženými v mezipaměti existují nekompatibility balíčků:
Vymažte mezipaměti balíčků NuGet spuštěním následujícího
dotnet nuget locals
příkazu v příkazovém prostředí:dotnet nuget locals --clear all
Vyčistěte a znovu sestavte aplikaci nebo řešení.
Odstraňování potíží
Postupujte podle pokynů k řešení potíží na konci Blazor WebAssembly tématu zabezpečení, které platí pro vaši aplikaci:
Samostatné aplikace Blazor WebAssembly:
- Obecné pokyny pro zprostředkovatele OIDC a knihovnu ověřování WebAssembly
- Účty Microsoft
- Microsoft Entra ID (ME-ID)
- Azure Active Directory (AAD) B2C
Hostované aplikace Blazor WebAssembly:
Neautorizovaný klient pro Microsoft Entra ID (ME-ID)
Po upgradu Blazor WebAssembly aplikace, která k ověřování používá AAD, se může po přihlášení uživatele pomocí AAD zobrazit následující chyba při zpětném volání přihlášení k aplikaci:
info: Autorizace Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] selhala. Tyto požadavky nebyly splněny: DenyAnonymousAuthorizationRequirement: Vyžaduje ověřeného uživatele.
Chyba zpětného volání přihlášení z AAD:
- Chyba:
unauthorized_client
- Popis:
AADB2C90058: The provided application is not configured to allow public clients.
Řešení chyby:
- Na webu Azure Portal přejděte k manifestu aplikace.
allowPublicClient
Nastavte atribut nanull
nebotrue
.
Blazor Aktualizace progresivní webové aplikace (PWA)
Do souboru projektu aplikace PWA přidejte následující položku:
<ItemGroup>
<ServiceWorker Include="wwwroot\service-worker.js"
PublishedContent="wwwroot\service-worker.published.js" />
</ItemGroup>
Odebrání odkazu šablony stylů STYLŮ CSS ve verzi Preview
Pokud projekt wwwroot/index.html
(Blazor WebAssembly) nebo Pages/_Host.cshtml
(Blazor Server) obsahuje prvek šablony <link>
stylů ze scoped.styles.css
starší verze Preview 5.0, odeberte <link>
značku:
-<link href="_framework/scoped.styles.css/" rel="stylesheet" />
Aktualizace Razor knihoven tříd (RCLS)
Migrujte Razor knihovny tříd (RCLS), abyste mohli využívat nová rozhraní API nebo funkce, které jsou zavedeny jako součást ASP.NET Core 5.0.
Aktualizace seznamu RCL, který cílí na komponenty:
V souboru projektu aktualizujte následující vlastnosti:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Aktualizujte další balíčky na nejnovější verze. Nejnovější verze najdete v NuGet.org.
Pokud chcete aktualizovat seznam RCL určený pro MVC, aktualizujte v souboru projektu následující vlastnosti:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Aktualizace odkazů na balíčky
V souboru projektu aktualizujte každý odkaz na Version
balíček Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*a System.Net.Http.Json atribut odkazu na balíček 5.0.0 nebo novější. Příklad:
<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>
Aktualizace imagí Dockeru
U aplikací používajících Docker aktualizujte příkazy a skripty DockerfileFROM
. Použijte základní image, která zahrnuje modul runtime ASP.NET Core 5.0. Představte si následující docker pull
rozdíl mezi ASP.NET Core 3.1 a 5.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:5.0
V rámci přechodu na .NET jako název produktu se image Dockeru přesunuly z mcr.microsoft.com/dotnet/core
úložišť do mcr.microsoft.com/dotnet
. Další informace najdete v tématu dotnet/dotnet-docker#1939.
Změny vazby modelu ve ASP.NET Core MVC a Razor Stránkách
Hodnoty DateTime jsou vázané jako časy UTC.
V ASP.NET Core 3.1 a starších DateTime
byly hodnoty vázané na model jako místní čas, kdy server určil časové pásmo. DateTime
hodnoty vázané ze vstupního formátování (JSON) a DateTimeOffset
hodnoty byly vázány jako časové pásmo UTC.
V ASP.NET Core 5.0 a novější vazby modelu konzistentně DateTime
sváže hodnoty s časovým pásmem UTC.
Chcete-li zachovat předchozí chování, odeberte v Startup.ConfigureServices
:DateTimeModelBinderProvider
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider \ ComplexObjectModelBinder replace ComplexTypeModelBinderProvider \ ComplexTypeModelBinder
Pokud chcete přidat podporu pro typy záznamů C# 9 vazby modelu, je následujícíComplexTypeModelBinderProvider:
- Poznámka je zastaralá.
- Ve výchozím nastavení už není zaregistrovaný.
Aplikace, které spoléhají na přítomnost ComplexTypeModelBinderProvider
v ModelBinderProviders
kolekci, musí odkazovat na nového poskytovatele pořadače:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
Zastaralé aplikace UseDatabaseErrorPage
Šablony ASP.NET Core 3.1, které obsahují možnost pro jednotlivé uživatelské účty, generují volání UseDatabaseErrorPage. UseDatabaseErrorPage
je nyní zastaralý a měl by být nahrazen kombinací AddDatabaseDeveloperPageExceptionFilter
a UseMigrationsEndPoint
, jak je znázorněno v následujícím kódu:
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();
}
Další informace najdete u tohoto problému na GitHubu.
modul ASP.NET Core (ANCM)
Pokud ASP.NET Core Module (ANCM) nebyla vybraná komponenta při instalaci sady Visual Studio nebo pokud byla v systému nainstalována předchozí verze ANCM, stáhněte si nejnovější instalační program balíčku hostingu .NET Core (přímý stažení) a spusťte instalační program. Další informace naleznete v tématu Hosting Bundle.
Změny odkazů na balíčky ovlivňující některé balíčky NuGet
Při migraci některých Microsoft.Extensions.*
balíčků NuGet z úložiště dotnet/extensions dotnet /runtime, jak je popsáno v tématu Migrace obsahu dotnet/runtime/ rozšíření dotnet/runtime a dotnet/aspnetcore (aspnet/Oznámení #411) se změny balení použijí na některé migrované balíčky. Tyto změny často vedou ke změnám oboru názvů pro rozhraní .NET API.
Pokud chcete dále zkoumat rozhraní API pro změny oboru názvů aplikací při migraci na verzi 5.0, použijte prohlížeč rozhraní .NET API.
Migrujte Microsoft.Identity. Web
Následující stránky wikiwebu vysvětlují, jak migrovat Microsoft.Identity. Web z ASP.NET Core 3.1 na 5.0:
Následující kurzy také vysvětlují migraci:
- Webová aplikace ASP.NET Core, která přihlašuje uživatele s platformou Microsoftu identity ve vaší organizaci. Viz možnost 2: Vytvoření ukázky z příkazového řádku
- Přihlaste se uživatele pomocí platformy Microsoft identity v desktopové aplikaci WPF a volejte webové rozhraní API ASP.NET Core. Podívejte se , jak byl kód vytvořen.
Kontrola zásadních změn
Zásadní změny z .NET Core 3.1 na .NET 5.0 najdete v tématu Zásadní změny migrace z verze 3.1 na 5.0. ASP.NET Core a Entity Framework Core jsou také zahrnuté v seznamu.