Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln förklarar hur du uppdaterar ett befintligt ASP.NET Core 3.1-projekt till ASP.NET Core i .NET 5. Anvisningar om hur du migrerar från ASP.NET Core 3.1 till ASP.NET Core i .NET 6 finns i Migrera från ASP.NET Core 3.1 till .NET 6.
Prerequisites
- Visual Studio 2019 16.8 eller senare med arbetsbelastningen ASP.NET och webbutveckling
- .NET 5 SDK
Uppdatera .NET 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 SDK-version uppdaterar version du egenskapen till den .NET 5 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.
Blazor Ändringar i approutningslogik i 5.0.1 och ytterligare .NET 5.x-versioner upp till .NET 6
Beräkningen av routningsprioriteten ändrades i korrigeringsversionen 5.0.1. 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 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 5.0.1 eller senare matchar routningsbeteendet som definieras i ASP.NET Core-appar, där ramverket beräknar och etablerar vägprioriteten för varje segment först och endast använder vägens längd 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å @trueföredrar vägmatchning exakta matchningar framför jokertecken.
Important
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.htmlav en Blazor WebAssembly-app ellerPages/_Host.cshtmlför en Blazor Server app lägger du till ett<link>-element i<head>-elementet för formatmallar. I följande<link>elementhrefattributvä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" />Clientprojekt 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.razorfiler 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}.SharedBlazor 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}.SharedI 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.cssfilen för en Blazor WebAssembly-app ellerwwwroot/css/site.cssfil 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; }Note
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.WebtillMicrosoft.NET.Sdk.BlazorWebAssembly:- <Project Sdk="Microsoft.NET.Sdk.Web"> + <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">Note
Den här uppdateringen gäller endast fristående Blazor WebAssembly projekt och
Clientprojekt 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 enidinstä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.BaseAddressmed 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
openidochoffline_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.Readomfång:options.ProviderOptions.DefaultAccessTokenScopes .Add("https://graph.microsoft.com/User.Read");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 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
openidochoffline_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 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 en enkelsidesapplikation 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:
Note
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 localskommando i ett kommandogränssnitt:dotnet nuget locals --clear allRensa och återskapa appen eller lösningen.
Troubleshoot
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
allowPublicClienttillnullellertrue.
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 i .NET 5.
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 basbild som innehåller .NET 5 körtid. Överväg följande docker pull kommandoskillnad mellan ASP.NET Core 3.1 och .NET 5:
- 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 eller tidigare DateTime var värdena 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 .NET 5 eller senare binder modellbindningen DateTime konsekvent 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 .NET 5 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 .NET 5:
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.
Brytande förändringar
Använd artiklarna i Icke-bakåtkompatibla ändringar i .NET för att hitta icke-bakåtkompatibla ändringar som kan gälla när du uppgraderar en app till en nyare version av .NET.
ASP.NET Core