Migrera från ASP.NET Core 3.1 till 5.0
I den här artikeln beskrivs hur du uppdaterar ett befintligt ASP.NET Core 3.1-projekt till ASP.NET Core 5.0. Anvisningar om hur du migrerar från ASP.NET Core 3.1 till ASP.NET Core 6.0 finns i Migrera från ASP.NET Core 3.1 till 6.0.
Förutsättningar
- Visual Studio 2019 16.8 eller senare med arbetsbelastningen ASP.NET och webbutveckling
- .NET 5.0 SDK
Uppdatera .NET Core SDK-versionen i global.json
Om du förlitar dig på en global.json fil för att rikta in dig på en specifik .NET Core SDK-version uppdaterar du egenskapen version
till den .NET 5.0 SDK-version som är installerad. Till exempel:
{
"sdk": {
- "version": "3.1.200"
+ "version": "5.0.100"
}
}
Uppdatera målramverket
Om du uppdaterar ett Blazor WebAssembly projekt, hoppa till avsnittet Uppdatera Blazor WebAssembly projekt. För andra ASP.NET Core-projekttyper uppdaterar du projektfilens Target Framework Moniker (TFM) till net5.0
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
Ta bort bin
och obj
mappar
Du kan behöva ta bort mapparna bin
och obj
. Kör dotnet nuget locals --clear all
för att rensa NuGet-paketcachen.
Ändringar i Blazor appdirigeringslogik i 5.0.1 och ytterligare 5.x-versioner upp till 6.0
Beräkningen av routningsprioriteten ändrades i ASP.NET Core 5.0.1-korrigeringsversionen. Detta kan påverka dig om du har definierat catch-all-vägar eller vägar med valfria parametrar.
Gammalt beteende
Med det tidigare beteendet i ASP.NET Core 5.0.0 eller tidigare matchas vägar med lägre prioritet, till exempel {*slug}
, före vägar med högre prioritet, till exempel /customer/{id}
.
Nytt beteende
Det nya beteendet i ASP.NET Core 5.0.1 eller senare matchar routningsbeteendet som definieras i ASP.NET Core-appar, där ramverket beräknar och etablerar routningsprioriteten för varje segment först och endast använder längden på vägen för att bryta banden som ett sekundärt villkor.
Orsak till ändring
Det ursprungliga beteendet anses vara en bugg i implementeringen eftersom vårt mål är att Blazor routningssystemet ska bete sig på samma sätt som ASP.NET Core-routningssystemet för den delmängd av funktioner som stöds av Blazor routning.
Rekommenderad åtgärd
Lägg till attributet PreferExactMatches
till komponenten Router
i App.razor
-filen för att välja rätt beteende:
<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
När PreferExactMatches
är inställt på @true
föredrar vägmatchning exakta matchningar framför jokertecken.
Viktig
Alla appar bör uttryckligen ange PreferExactMatches
till @true
.
Möjligheten att ange PreferExactMatches
till @false
eller lämna den inte angett tillhandahålls endast för bakåtkompatibilitetens skull.
När .NET 6 släpps föredrar routern alltid exakta matchningar och alternativet PreferExactMatches
är inte tillgängligt.
Uppdatera Blazor WebAssembly- och Blazor Server-projekt
Vägledningen i det här avsnittet gäller både Blazor värdmodeller. Avsnitt som följer det här avsnittet innehåller ytterligare vägledning som är specifik för värdmodeller och apptyper. Använd vägledningen från alla relevanta avsnitt i din app.
I
wwwroot/index.html
av en Blazor WebAssembly-app ellerPages/_Host.cshtml
för en Blazor Server app lägger du till ett<link>
-element i<head>
-elementet för formatmallar. I följande<link>
elementhref
attributvärden är platshållaren{ASSEMBLY NAME}
appens sammansättningsnamn.+<link href="{ASSEMBLY NAME}.styles.css" rel="stylesheet" />
Fristående Blazor WebAssembly eller Blazor Server exempel:
+<link href="BlazorSample.styles.css" rel="stylesheet" />
Client
projekt för ett värdbaserat Blazor WebAssembly lösningsexempel:+<link href="BlazorSample.Client.styles.css" rel="stylesheet" />
Inkludera ett nytt namnområde i appens
_Imports.razor
-fil för komponentvirtualisering, Microsoft.AspNetCore.Components.Web.Virtualization. Följande_Imports.razor
filer visar standardnamnrymderna i appar som genererats från Blazor projektmallar. Platshållaren{ASSEMBLY NAME}
är appens samlingsnamn.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
I komponenten
MainLayout
(Shared/MainLayout.razor
) omger du komponentens HTML-kod med ett<div>
-element som har ettclass
-attribut inställt påpage
:<div class="page"> ... </div>
Lägg till följande filer i mappen
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; } }
Den senaste grundläggande
wwwroot/css/app.css
filen för en Blazor WebAssembly-app ellerwwwroot/css/site.css
fil för en Blazor Server app innehåller följande formatmallar. Ta bort extra formatmallar men behåll följande formatmallar och alla som du har lagt till i appen.Följande formatmall innehåller endast basformat och inte inkludera anpassade format som har lagts till av utvecklaren:
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
Föregående exempel visar inte
@import
-direktivet för Open Iconic-ikoner (open-iconic-bootstrap.css
), som tillhandahålls av Blazor-projektmallen. Open Iconic övergavs av sina ansvariga.
Uppdatera Blazor WebAssembly projekt
Följ riktlinjerna i föregående avsnittet Uppdatera Blazor WebAssembly och Blazor Server projekt.
För ett Blazor WebAssembly projekt, inklusive Client
projektet för en värdbaserad Blazor lösning, tillämpar du följande ändringar i projektfilen:
Uppdatera SDK:et från
Microsoft.NET.Sdk.Web
tillMicrosoft.NET.Sdk.BlazorWebAssembly
:- <Project Sdk="Microsoft.NET.Sdk.Web"> + <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
Not
Den här uppdateringen gäller endast fristående Blazor WebAssembly projekt och
Client
projekt för värdbaserade Blazor lösningar.Uppdatera följande egenskaper:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> <PropertyGroup> - <TargetFramework>netstandard2.1</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Ta bort paketreferensen till Microsoft.AspNetCore.Components.WebAssembly.Build:
<ItemGroup> - <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" PrivateAssets="all" />
Uppdatera andra paket till de senaste versionerna. De senaste versionerna finns på NuGet.org.
I
wwwroot/index.html
ändrar du elementet som läser inApp
-komponenten till ett<div>
-element med enid
inställd påapp
:-<app>Loading...</app> +<div id="app">Loading...</div>
I
Program.Main
(Program.cs
) ändrar du referensen till<app>
-elementet till en CSS-väljare genom att lägga till en hash-#
till den:-builder.RootComponents.Add<App>("app"); +builder.RootComponents.Add<App>("#app");
I
Program.Main
(Program.cs
) ändrar du en standard transientHttpClient
-registrering till nischerad, om den finns:-builder.Services.AddTransient(sp => new HttpClient - { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddScoped(sp => new HttpClient + { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
I
Program.Main
(Program.cs
) iClient
-appen för värdbaserade Blazor-lösningar:- Alternativt kan du ersätta
builder.HostEnvironment.BaseAddress
med strängklientbasadresser. - Ändra alla namngivna tillfälliga klientfabriksregistreringar till omfångsbundna.
-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"));
I föregående kod är platshållaren
{APP NAMESPACE}
appens namnrymd.- Alternativt kan du ersätta
Fristående Blazor WebAssembly-app med Microsoft-konton
Följ anvisningarna i föregående Uppdatera Blazor WebAssembly och Blazor Server projekt och Uppdatera Blazor WebAssembly projekt avsnitt.
För en fristående Blazor WebAssembly app som är registrerad i Azure-portalen för att använda Microsoft Entra-ID (ME-ID) för Microsoft-konton:
Appen kräver omfången
openid
ochoffline_access
:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
På bladet för appregistrering i Azure-portalen Autentisering:
- Ta bort Web-plattformskonfigurationen.
- Lägg till en enkelsidesapplikation plattformskonfiguration med appens omdirigerings-URI.
- Inaktivera implicit beviljande av för åtkomsttoken och ID-token.
Mer information finns i Så här säkrar du en fristående ASP.NET Core-app med Microsoft-konton Blazor WebAssembly.
Fristående Blazor WebAssembly app med Microsoft Entra-ID (ME-ID)
Följ anvisningarna i föregående Uppdatera Blazor WebAssembly och Blazor Server projekt och Uppdatera Blazor WebAssembly projekt avsnitt.
För en fristående Blazor WebAssembly app som är registrerad i Azure-portalen för att använda Microsoft Entra-ID (ME-ID):
Appen kräver
https://graph.microsoft.com/User.Read
omfång:options.ProviderOptions.DefaultAccessTokenScopes .Add("https://graph.microsoft.com/User.Read");
I bladet för appregistrering i Azure-portalen autentisering:
- Ta bort Web-plattformskonfigurationen.
- Lägg till ett ensidesprogram plattformskonfiguration med appens omdirigerings-URI.
- Inaktivera implicit beviljande av för åtkomsttoken och ID-token.
Mer information finns i Secure an ASP.NET Core Blazor WebAssembly standalone app with Microsoft Entra ID.
Fristående Blazor WebAssembly app med Azure Active Directory (AAD) B2C
Följ anvisningarna i föregående Uppdatera Blazor WebAssembly och Blazor Server projekt och Uppdatera Blazor WebAssembly projekt avsnitt.
För en fristående Blazor WebAssembly app som är registrerad i Azure-portalen för att använda Azure Active Directory (AAD) B2C:
Appen kräver omfången
openid
ochoffline_access
:options.ProviderOptions.DefaultAccessTokenScopes.Add("openid"); options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
I bladet för appregistrering i Azure-portalen autentisering:
- Ta bort Web-plattformskonfigurationen.
- Lägg till ett ensidesprogram plattformskonfiguration med appens omdirigerings-URI.
- Inaktivera implicit beviljande av för åtkomsttoken och ID-token.
Mer information finns i Skydda en ASP.NET Core Blazor WebAssembly fristående app med Azure Active Directory B2C.
Värdbaserad Blazor WebAssembly app med Microsoft Entra-ID (ME-ID) eller AAD B2C
Följ anvisningarna i föregående Uppdatera Blazor WebAssembly och Blazor Server projekt och Uppdatera Blazor WebAssembly projekt avsnitt.
Client
appregistrering av en värdbaserad Blazor lösning som använder AAD eller AAD B2C för användarautentisering bör använda ett ensidesprogram Azure Apps-plattformskonfiguration.
I Azure-portalen Client
appregistrering autentisering-panelen:
- Ta bort Web-plattformskonfigurationen.
- Lägg till ett ensidesprogram plattformskonfiguration med appens omdirigerings-URI.
- Inaktivera implicit beviljande av för åtkomsttoken och ID-token.
Mer information finns i:
- Skydda en värdbaserad ASP.NET Core Blazor WebAssembly-app med Microsoft Entra ID
- Skydda en värdbaserad ASP.NET Core Blazor WebAssembly-app med Azure Active Directory B2C
Uppdatera serverprojektet för en värdbaserad Blazor lösning
Följ riktlinjerna i föregående avsnitt:
- Uppdatera Blazor WebAssembly- och Blazor Server projekt
- Uppdatera projekten Blazor WebAssembly
- Avsnittet som gäller för appens leverantör med Azure Active Directory.
Uppdatera Server
projektet för en värdbaserad Blazor lösning som en ASP.NET Core-app enligt den allmänna vägledningen i den här artikeln.
Dessutom bör Server
projekt som autentiserar användare till klientprogram Blazor WebAssembly med Microsoft Entra ID (ME-ID) eller B2C anta nya Microsoft Identity v2.0-paket:
För AAD:
-<PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="..." />
+<PackageReference Include="Microsoft.Identity.Web" Version="{VERSION}" />
+<PackageReference Include="Microsoft.Identity.Web.UI" Version="{VERSION}" />
För 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}" />
För föregående paketreferenser fastställer du paketversionerna för {VERSION}
platshållare på NuGet.org:
Not
SDK för Server
-projektet i en värdbaserad Blazor WebAssembly lösning förblir Microsoft.NET.Sdk.Web
:
<Project Sdk="Microsoft.NET.Sdk.Web">
Mer information finns i:
- Skydda en värdbaserad ASP.NET Core Blazor WebAssembly-app med Microsoft Entra ID
- Skydda en värdbaserad ASP.NET Core Blazor WebAssembly-app med Azure Active Directory B2C
Rensa och återskapa lösningen
När du har migrerat appen eller lösningen till .NET 5 rensar du och återskapar appen eller lösningen. Om det finns inkompatibiliteter mellan nya paketreferenser och cachelagrade paket:
Rensa NuGet-paketcacheminnen genom att köra följande
dotnet nuget locals
kommando i ett kommandogränssnitt:dotnet nuget locals --clear all
Rensa och återskapa appen eller lösningen.
Felsöka
Följ anvisningarna för Felsökning i slutet av det Blazor WebAssembly säkerhetsämne som gäller för din app.
Fristående Blazor WebAssembly appar:
- Allmän vägledning för OIDC-leverantörer och WebAssembly Authentication Library
- Microsoft-konton
- Microsoft Entra-ID (ME-ID)
- Azure Active Directory (AAD) B2C
Värdbaserade Blazor WebAssembly appar:
Obehörig klient för Microsoft Entra-ID (ME-ID)
När du har uppgraderat en Blazor WebAssembly app som använder AAD för autentisering kan du få följande fel vid återanropet till appen efter att användaren har loggat in med AAD:
info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] Auktoriseringen misslyckades. Dessa krav uppfylldes inte: DenyAnonymousAuthorizationRequirement: Kräver en autentiserad användare.
Inloggningsfel vid återuppringning från AAD
- Fel:
unauthorized_client
- Beskrivning:
AADB2C90058: The provided application is not configured to allow public clients.
Så här löser du felet:
- Gå till -appens manifest i Azure-portalen.
- Ange attributet
allowPublicClient
tillnull
ellertrue
.
Uppdatera en Blazor progressiv webbapplikation (PWA)
Lägg till följande objekt i PWA-appens projektfil:
<ItemGroup>
<ServiceWorker Include="wwwroot\service-worker.js"
PublishedContent="wwwroot\service-worker.published.js" />
</ItemGroup>
Ta bort CSS-isoleringsformatmallslänk för förhandsgranskning
Om projektets wwwroot/index.html
(Blazor WebAssembly) eller Pages/_Host.cshtml
(Blazor Server) innehåller ett formatmallselement <link>
element för scoped.styles.css
från en tidigare version av förhandsversionen 5.0 tar du bort taggen <link>
:
-<link href="_framework/scoped.styles.css/" rel="stylesheet" />
Uppdatera Razor-klassbibliotek (RCL)
Migrera Razor klassbibliotek (RCL) för att dra nytta av nya API:er eller funktioner som introduceras som en del av ASP.NET Core 5.0.
Så här uppdaterar du en RCL som riktar sig till komponenter:
Uppdatera följande egenskaper i projektfilen:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> - <TargetFramework>netstandard2.0</TargetFramework> - <RazorLangVersion>3.0</RazorLangVersion> + <TargetFramework>net5.0</TargetFramework> </PropertyGroup>
Uppdatera andra paket till de senaste versionerna. De senaste versionerna finns på NuGet.org.
Uppdatera en RCL-riktad MVC genom att uppdatera följande egenskaper i projektfilen:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
- <TargetFramework>netcoreapp3.1</TargetFramework>
+ <TargetFramework>net5.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
Uppdatera paketreferenser
Uppdatera varje Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.*och System.Net.Http.Json paketreferensens Version
attribut till 5.0.0 eller senare. Till exempel:
<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>
Uppdatera Docker-avbildningar
För appar som använder Docker uppdaterar du Dockerfile-FROM
-instruktioner och skript. Använd en basavbildning som innehåller ASP.NET Core 5.0-runtime. Överväg följande docker pull
kommandoskillnad mellan ASP.NET Core 3.1 och 5.0:
- docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
+ docker pull mcr.microsoft.com/dotnet/aspnet:5.0
Som en del av övergången till ".NET" som produktnamn flyttade Docker-avbildningarna från mcr.microsoft.com/dotnet/core
-lagringsplatserna till mcr.microsoft.com/dotnet
. För mer information, se dotnet/dotnet-docker#1939.
Modellbindningsändringar i ASP.NET Core MVC och Razor Pages
DateTime-värden är modellbundna som UTC-tider
I ASP.NET Core 3.1 och tidigare var DateTime
värden modellbundna som lokal tid, där tidszonen fastställdes av servern.
DateTime
värden som är bundna från indataformatering (JSON) och DateTimeOffset
värden var bundna som UTC-tidszoner.
I ASP.NET Core 5.0 och senare binder modellbindningen konsekvent DateTime
värden med UTC-tidszonen.
Om du vill behålla det tidigare beteendet tar du bort DateTimeModelBinderProvider
i Startup.ConfigureServices
:
services.AddControllersWithViews(options =>
options.ModelBinderProviders.RemoveType<DateTimeModelBinderProvider>());
ComplexObjectModelBinderProvider \ ComplexObjectModelBinder ersätter ComplexTypeModelBinderProvider \ ComplexTypeModelBinder
För att lägga till stöd för modellbindning C# 9 posttyperär ComplexTypeModelBinderProvider:
- Kommenterat som föråldrat.
- Inte längre registrerad som standard.
Appar som förlitar sig på förekomsten av ComplexTypeModelBinderProvider
i ModelBinderProviders
-samlingen måste referera till den nya binder-providern:
- var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexTypeModelBinderProvider>();
+ var complexModelBinderProvider = options.ModelBinderProviders.OfType<ComplexObjectModelBinderProvider>();
UseDatabaseErrorPage föråldrad
Mallarna ASP.NET Core 3.1 som innehåller ett alternativ för enskilda användarkonton genererar ett anrop till UseDatabaseErrorPage.
UseDatabaseErrorPage
är nu föråldrad och bör ersättas med en kombination av AddDatabaseDeveloperPageExceptionFilter
och UseMigrationsEndPoint
, enligt följande kod:
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();
}
Mer information finns i det här GitHub-ärendet.
ASP.NET Core Module (ANCM)
Om ASP.NET Core Module (ANCM) inte var en vald komponent när Visual Studio installerades eller om en tidigare version av ANCM installerades på systemet laddar du ned den senaste .NET Core Hosting Bundle Installer (direkt nedladdning) och kör installationsprogrammet. Mer information finns i Hosting Bundle.
Paketreferensändringar som påverkar vissa NuGet-paket
Med migreringen av vissa Microsoft.Extensions.*
NuGet-paket från dotnet/extensions-lagringsplatsen till dotnet/runtime, enligt beskrivningen i Migrera dotnet/extensions-innehåll till dotnet/runtime och dotnet/aspnetcore (aspnet/Meddelanden #411)tillämpas paketändringar på några av de migrerade paketen. Dessa ändringar resulterar ofta i namnområdesändringar för .NET API.
Om du vill undersöka API:er ytterligare för ändringar i appnamnområdet vid migrering till 5.0 använder du .NET API-webbläsaren.
Migrera Microsoft.Identity. Web
Följande wiki-sidor förklarar hur du migrerar Microsoft.Identity. Webb från ASP.NET Core 3.1 till 5.0:
Följande handledningar förklarar migreringen också.
- En ASP.NET Core-webbapp som loggar in användare med Microsofts identitetsplattform i din organisation. Se Alternativ 2: Skapa exemplet från kommandoraden.
- Logga in en användare med Microsofts identitetsplattform i ett WPF Desktop-program och anropa ett ASP.NET Core Web API-. Se Hur skapades koden.
Granska icke-bakåtkompatibla ändringar
Information om icke-bakåtkompatibla ändringar från .NET Core 3.1 till .NET 5.0 finns i Icke-bakåtkompatibla ändringar för migrering från version 3.1 till 5.0. ASP.NET Core och Entity Framework Core ingår också i listan.
ASP.NET Core