Migrate from ASP.NET Core 2.0 to 2.1 (Migrieren von ASP.NET Core 2.0 zu 2.1)Migrate from ASP.NET Core 2.0 to 2.1
Von Rick AndersonBy Rick Anderson
In den Neuerungen in ASP.net Core 2,1 finden Sie eine Übersicht über die neuen Features in ASP.net Core 2,1.See What's new in ASP.NET Core 2.1 for an overview of the new features in ASP.NET Core 2.1.
Inhalt dieses ArtikelsThis article:
- Behandelt die Grundlagen der Migration einer ASP.net Core 2,0-App zu 2,1.Covers the basics of migrating an ASP.NET Core 2.0 app to 2.1.
- Bietet eine Übersicht über die Änderungen an den ASP.net Core Webanwendungs Vorlagen.Provides an overview of the changes to the ASP.NET Core web application templates.
Eine schnelle Möglichkeit, um eine Übersicht über die Änderungen in 2,1 zu erhalten, ist Folgendes:A quick way to get an overview of the changes in 2.1 is to:
- Erstellen Sie eine ASP.net Core 2,0-Web-App mit dem Namen "WebApp1".Create an ASP.NET Core 2.0 web app named WebApp1.
- Commit der "WebApp1" in einem Quell Code Verwaltungssystem.Commit the WebApp1 in a source control system.
- Löschen Sie "WebApp1", und erstellen Sie eine ASP.net Core 2,1-Web-App mit dem Namen "WebApp1" am gleichen Ort.Delete WebApp1 and create an ASP.NET Core 2.1 web app named WebApp1 in the same place.
- Überprüfen Sie die Änderungen in Version 2,1.Review the changes in the 2.1 version.
Dieser Artikel bietet eine Übersicht über die Migration zu ASP.net Core 2,1.This article provides an overview on migration to ASP.NET Core 2.1. Sie enthält keine vollständige Liste aller Änderungen, die für die Migration zu Version 2,1 erforderlich sind.It doesn't contain a complete list of all changes needed to migrate to version 2.1. Einige Projekte erfordern möglicherweise weitere Schritte, abhängig von den Optionen, die beim Erstellen des Projekts ausgewählt wurden, und von Änderungen am Projekt.Some projects might require more steps depending on the options selected when the project was created and modifications made to the project.
Aktualisieren der Projektdatei, damit sie die 2.1-Versionen verwendetUpdate the project file to use 2.1 versions
Aktualisieren Sie die Projektdatei:Update the project file:
- Ändern Sie das Ziel Framework in .net Core 2,1, indem Sie die Projektdatei in aktualisieren
<TargetFramework>netcoreapp2.1</TargetFramework>
.Change the target framework to .NET Core 2.1 by updating the project file to<TargetFramework>netcoreapp2.1</TargetFramework>
. - Ersetzen Sie den Paket Verweis für
Microsoft.AspNetCore.All
durch einen Paket Verweis fürMicrosoft.AspNetCore.App
.Replace the package reference forMicrosoft.AspNetCore.All
with a package reference forMicrosoft.AspNetCore.App
. Möglicherweise müssen Sie Abhängigkeiten hinzufügen, die aus entfernt wurdenMicrosoft.AspNetCore.All
.You may need to add dependencies that were removed fromMicrosoft.AspNetCore.All
. Weitere Informationen finden Sie unter Das Metapaket „Microsoft.AspNetCore.All“ für ASP.NET Core 2.0 und Microsoft.AspNetCore.App-Metapaket für ASP.NET Core.For more information, see Das Metapaket „Microsoft.AspNetCore.All“ für ASP.NET Core 2.0 and Microsoft.AspNetCore.App-Metapaket für ASP.NET Core. - Entfernen Sie das "Version"-Attribut für den Paket Verweis auf
Microsoft.AspNetCore.App
.Remove the "Version" attribute on the package reference toMicrosoft.AspNetCore.App
. Bei Projekten, die verwenden,<Project Sdk="Microsoft.NET.Sdk.Web">
muss die-Version nicht festgelegt werden.Projects that use<Project Sdk="Microsoft.NET.Sdk.Web">
don't need to set the version. Die Version wird vom Ziel Framework impliziert und so ausgewählt, dass Sie am besten mit der Funktionsweise von ASP.net Core 2,1 kompatibel ist.The version is implied by the target framework and selected to best match the way ASP.NET Core 2.1 works. Weitere Informationen finden Sie unter den Regeln für Projekte, die auf das freigegebene Framework abzielen .For more information, see the Rules for projects targeting the shared framework section. - Aktualisieren Sie für apps, die auf die .NET Framework abzielen, jeden Paket Verweis auf 2,1.For apps that target the .NET Framework, update each package reference to 2.1.
- Entfernen Sie Verweise auf < dotnetclitoolreference > -Elemente für die folgenden Pakete.Remove references to <DotNetCliToolReference> elements for the following packages. Diese Tools werden standardmäßig im .net Core-CLI gebündelt und müssen nicht separat installiert werden.These tools are bundled by default in the .NET Core CLI and don't need to be installed separately.
- Microsoft. dotnet. Watcher. Tools (
dotnet watch
)Microsoft.DotNet.Watcher.Tools (dotnet watch
) - Microsoft. entityframeworkcore. Tools. dotnet (
dotnet ef
)Microsoft.EntityFrameworkCore.Tools.DotNet (dotnet ef
) - Microsoft. Extensions. Caching. sqlconfig. Tools (
dotnet sql-cache
)Microsoft.Extensions.Caching.SqlConfig.Tools (dotnet sql-cache
) - Microsoft. Extensions. secretmanager. Tools (
dotnet user-secrets
)Microsoft.Extensions.SecretManager.Tools (dotnet user-secrets
)
- Microsoft. dotnet. Watcher. Tools (
- Optional: Sie können das < dotnetclitoolreference > -Element für entfernen
Microsoft.VisualStudio.Web.CodeGeneration.Tools
.Optional: you can remove the <DotNetCliToolReference> element forMicrosoft.VisualStudio.Web.CodeGeneration.Tools
. Sie können dieses Tool durch Ausführen von durch eine Global installierte Version ersetzendotnet tool install -g dotnet-aspnet-codegenerator
.You can replace this tool with a globally installed version by runningdotnet tool install -g dotnet-aspnet-codegenerator
. - Für 2,1 ist eine Razor Klassenbibliothek die empfohlene Lösung für die Verteilung von Razor Dateien.For 2.1, a Razor Class Library is the recommended solution to distribute Razor files. Wenn Ihre APP eingebettete Sichten verwendet oder anderweitig von der Lauf Zeit Kompilierung von Razor Dateien abhängig ist, fügen Sie
<CopyRefAssembliesToPublishDirectory>true</CopyRefAssembliesToPublishDirectory>
einer<PropertyGroup>
in der Projektdatei hinzu.If your app uses embedded views, or otherwise relies on runtime compilation of Razor files, add<CopyRefAssembliesToPublishDirectory>true</CopyRefAssembliesToPublishDirectory>
to a<PropertyGroup>
in your project file.
Das folgende Markup zeigt die von der Vorlage generierte 2,0-Projektdatei:The following markup shows the template-generated 2.0 project file:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<UserSecretsId>aspnet-{Project Name}-{GUID}</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.4" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.2" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
</Project>
Das folgende Markup zeigt die von der Vorlage generierte 2,1-Projektdatei:The following markup shows the template-generated 2.1 project file:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<UserSecretsId>aspnet-{Project Name}-{GUID}</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" PrivateAssets="All" />
</ItemGroup>
</Project>
Regeln für Projekte, die auf das freigegebene Framework abzielenRules for projects targeting the shared framework
Ein freigegebenes Framework besteht aus einer Reihe von Assemblys (DLL-Dateien), die sich nicht in den Ordnern der App befinden.A shared framework is a set of assemblies (.dll files) that are not in the app's folders. Das freigegebene Framework muss zum Ausführen der App auf dem Computer installiert sein.The shared framework must be installed on the machine to run the app. Weitere Informationen finden Sie unter The shared framework (Das freigegebene Framework).For more information, see The shared framework.
ASP.net Core 2,1 umfasst die folgenden gemeinsam genutzten Frameworks:ASP.NET Core 2.1 includes the following shared frameworks:
Die vom Paket Verweis angegebene Version ist die mindestens erforderliche Version.The version specified by the package reference is the minimum required version. Beispielsweise kann ein Projekt, das auf die 2.1.1-Versionen dieser Pakete verweist, nicht auf einem Computer ausgeführt werden, auf dem nur die 2.1.0-Laufzeit installiert ist.For example, a project referencing the 2.1.1 versions of these packages won't run on a machine with only the 2.1.0 runtime installed.
Bekannte Probleme bei Projekten, die auf ein frei gegebenes Framework abzielen:Known issues for projects targeting a shared framework:
Das .net Core 2.1.300 SDK (zuerst in Visual Studio 15,6 enthalten) legt die implizite Version von
Microsoft.AspNetCore.App
auf 2.1.0 fest, was zu Konflikten mit Entity Framework Core 2.1.1 geführt hat.The .NET Core 2.1.300 SDK (first included in Visual Studio 15.6) set the implicit version ofMicrosoft.AspNetCore.App
to 2.1.0 which caused conflicts with Entity Framework Core 2.1.1. Die empfohlene Lösung besteht darin, die .net Core SDK auf 2.1.301 oder höher zu aktualisieren.The recommended solution is to upgrade the .NET Core SDK to 2.1.301 or later. Weitere Informationen finden Sie unter Pakete, die Abhängigkeiten mit Microsoft. aspnetcore freigeben. die APP kann nicht auf Patchversionen verweisen.For more information, see Packages that share dependencies with Microsoft.AspNetCore.App cannot reference patch versions.Alle Projekte, die oder verwenden müssen
Microsoft.AspNetCore.All
Microsoft.AspNetCore.App
, müssen einen Paket Verweis für das Paket in der Projektdatei hinzufügen. Dies ist auch dann der Fall, wenn Sie einen Projekt Verweis auf ein anderes Projekt mitMicrosoft.AspNetCore.All
oder enthaltenMicrosoft.AspNetCore.App
.All projects that must useMicrosoft.AspNetCore.All
orMicrosoft.AspNetCore.App
should add a package reference for the package in the project file, even if they contain a project reference to another project usingMicrosoft.AspNetCore.All
orMicrosoft.AspNetCore.App
.Beispiel:Example:
MyApp
verfügt über einen Paket Verweis aufMicrosoft.AspNetCore.App
.MyApp
has a package reference toMicrosoft.AspNetCore.App
.MyApp.Tests
weist einen Projekt Verweis auf aufMyApp.csproj
.MyApp.Tests
has a project reference toMyApp.csproj
.
Fügen Sie einen Paket Verweis für hinzu
Microsoft.AspNetCore.App
MyApp.Tests
.Add a package reference forMicrosoft.AspNetCore.App
toMyApp.Tests
. Weitere Informationen finden Sie unter Integrationstests sind schwer einzurichten und können bei der Wartung von freigegebenen Frameworks unterbrechen.For more information, see Integration testing is hard to set up and may break on shared framework servicing.
Aktualisieren der 2,1-docker-ImagesUpdate to the 2.1 Docker images
In ASP.net Core 2,1 wurden die Docker-Images zum dotnet/dotnet-docker-GitHub-Repositorymigriert.In ASP.NET Core 2.1, the Docker images migrated to the dotnet/dotnet-docker GitHub repository. In der folgenden Tabelle werden das docker-Image und die tagänderungen angezeigt:The following table shows the Docker image and tag changes:
2.02.0 | 2.12.1 |
---|---|
microsoft/aspnetcore:2.0microsoft/aspnetcore:2.0 | microsoft/dotnet:2.1-aspnetcore-runtimemicrosoft/dotnet:2.1-aspnetcore-runtime |
microsoft/aspnetcore-build:2.0microsoft/aspnetcore-build:2.0 | microsoft/dotnet:2.1-sdkmicrosoft/dotnet:2.1-sdk |
Ändern Sie die FROM
Zeilen in der dockerfile-Datei so, dass die neuen Bildnamen und-Tags in der 2,1-Spalte der vorangehenden Tabelle verwendet werden.Change the FROM
lines in your Dockerfile to use the new image names and tags in the preceding table's 2.1 column. Weitere Informationen finden Sie unter Migrieren von aspnetcore-docker-Repositorys zu dotnet.For more information, see Migrating from aspnetcore docker repos to dotnet.
Änderungen, um die neuen Code basierten Idiome zu nutzen, die in ASP.net Core 2,1 empfohlen werdenChanges to take advantage of the new code-based idioms that are recommended in ASP.NET Core 2.1
Änderungen an "Main"Changes to Main
Die folgenden Abbildungen zeigen die Änderungen, die an der mit Vorlagen generierten generierten Program.cs -Datei vorgenommen wurden.The following images show the changes made to the templated generated Program.cs file.
Die vorherige Abbildung zeigt die Version 2,0 mit den Löschungen rot.The preceding image shows the 2.0 version with the deletions in red.
Die folgende Abbildung zeigt den 2,1-Code.The following image shows the 2.1 code. Der Code in Grün hat die Version 2,0 ersetzt:The code in green replaced the 2.0 version:
Der folgende Code zeigt die Version 2,1 von Program.cs:The following code shows the 2.1 version of Program.cs:
namespace WebApp1
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
Der neue ersetzt den-Befehl durch "" mit "" Main
BuildWebHost
. The new Main
replaces the call to BuildWebHost
with CreateWebHostBuilder. Iwebhostbuilder wurde zur Unterstützung einer neuen Infrastruktur für Integrationstestshinzugefügt.IWebHostBuilder was added to support a new integration test infrastructure.
Änderungen am StartChanges to Startup
Der folgende Code zeigt die Änderungen an 2,1-Vorlagen generiertem Code.The following code shows the changes to 2.1 template generated code. Alle Änderungen sind neu hinzugefügter Code, mit dem Unterschied, dass UseBrowserLink
entfernt wurde:All changes are newly added code, except that UseBrowserLink
has been removed:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace WebApp1
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
// If the app uses Session or TempData based on Session:
// app.UseSession();
app.UseMvc();
}
}
}
Die vorangehenden Codeänderungen werden in beschrieben:The preceding code changes are detailed in:
- Dsgvo- Unterstützung in ASP.net Core für
CookiePolicyOptions
undUseCookiePolicy
.GDPR support in ASP.NET Core forCookiePolicyOptions
andUseCookiePolicy
. - Http Strict Transport Security Protocol (hsts) für
UseHsts
.HTTP Strict Transport Security Protocol (HSTS) forUseHsts
. - Https für erforderlich
UseHttpsRedirection
.Require HTTPS forUseHttpsRedirection
. - Setcompatibilityversion für
SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.SetCompatibilityVersion forSetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.
Änderungen am AuthentifizierungscodeChanges to authentication code
ASP.net Core 2,1 wird ASP.NET Core Identity als Razor Klassenbibliothek (RCL) bereitstellt.ASP.NET Core 2.1 provides ASP.NET Core Identity as a Razor Class Library (RCL).
Die standardmäßige 2,1- Identity Benutzeroberfläche bietet derzeit keine wichtigen neuen Features gegenüber der 2,0-Version.The default 2.1 Identity UI doesn't currently provide significant new features over the 2.0 version. IdentityDas Ersetzen durch das RCL-Paket ist optional.Replacing Identity with the RCL package is optional. Zum Ersetzen des generierten Vorlagen Identity Codes durch die RCL-Version sind folgende Vorteile zu bieten:The advantages to replacing the template generated Identity code with the RCL version include:
- Viele Dateien werden aus der Quell Struktur verschoben.Many files are moved out of your source tree.
- Alle Fehlerbehebungen oder neuen Funktionen von Identity sind im Metapaket Microsoft. aspnetcore. appenthalten.Any bug fixes or new features to Identity are included in the Microsoft.AspNetCore.App metapackage. Sie erhalten automatisch das aktualisierte, Identity Wenn
Microsoft.AspNetCore.App
aktualisiert wird.You automatically get the updated Identity whenMicrosoft.AspNetCore.App
is updated.
Wenn Sie nicht triviale Änderungen am Vorlagen generierten Code vorgenommen haben Identity :If you've made non-trivial changes to the template generated Identity code:
- Die vorherigen Vorteile begründen wahrscheinlich nicht die Umstellung auf die RCL-Version.The preceding advantages probably do not justify converting to the RCL version.
- Sie können den ASP.net Core 2,0 Identity -Code behalten, der vollständig unterstützt wird.You can keep your ASP.NET Core 2.0 Identity code, it's fully supported.
Identity 2,1 macht Endpunkte mit dem Identity
Bereich verfügbar.Identity 2.1 exposes endpoints with the Identity
area. In der folgenden Tabelle werden beispielsweise Beispiele von Identity Endpunkten angezeigt, die von 2,0 zu 2,1 wechseln:For example, the follow table shows examples of Identity endpoints that change from 2.0 to 2.1:
2,0-URL2.0 URL | 2,1-URL2.1 URL |
---|---|
/Account/Login/Account/Login | /Identity/Account/Login/Identity/Account/Login |
/Account/Logout/Account/Logout | /Identity/Account/Logout/Identity/Account/Logout |
/Account/Manage/Account/Manage | /Identity/Account/Manage/Identity/Account/Manage |
Anwendungen, die über Code verfügen Identity und 2,0 Identity UI mit der 2,1-Bibliothek ersetzen, Identity müssen Identity die URLs berücksichtigen, /Identity
die den URIs vorangesteht sind.Applications that have code using Identity and replace 2.0 Identity UI with the 2.1 Identity Library need to take into account Identity URLs have /Identity
segment prepended to the URIs. Eine Möglichkeit, die neuen Identity Endpunkte zu verarbeiten, ist das Einrichten von Umleitungen, z /Account/Login
. b /Identity/Account/Login
. von zu.One way to handle the new Identity endpoints is to set up redirects, for example from /Account/Login
to /Identity/Account/Login
.
Update Identity auf Version 2,1Update Identity to version 2.1
Die folgenden Optionen sind für die Aktualisierung Identity auf 2,1 verfügbar.The following options are available to update Identity to 2.1.
- Verwenden Sie den Identity Code der Benutzeroberfläche 2,0 ohne Änderungen.Use the Identity UI 2.0 code with no changes. Der Identity Code der Benutzeroberfläche 2,0 wird vollständig unterstützt.Using Identity UI 2.0 code is fully supported. Dies ist ein guter Ansatz, wenn an dem generierten Code bedeutende Änderungen vorgenommen wurden Identity .This is a good approach when significant changes have been made to the generated Identity code.
- Löschen Sie Ihren vorhandenen Identity 2,0-Code, und Identity Gerüst Sie in Ihr Projekt auf.Delete your existing Identity 2.0 code and Scaffold Identity into your project. Das Projekt verwendet die- ASP.NET Core Identity Razor Klassenbibliothek.Your project will use the ASP.NET Core Identity Razor Class Library. Sie können Code und die Benutzeroberfläche für jeden Identity Benutzeroberflächen Code generieren, den Sie geändert haben.You can generate code and UI for any of the Identity UI code that you modified. Wenden Sie die Codeänderungen auf den neu gerüdierten UI-Code an.Apply your code changes to the newly scaffolded UI code.
- Löschen Sie Identity den vorhandenen 2,0-Code, und Identity setzen Sie sich mit der Option zum über Schreiben aller Dateien in das Projekt um.Delete your existing Identity 2.0 code and Scaffold Identity into your project with the option to Override all files.
Ersetzen Identity von 2,0 UI durch die Identity 2,1- Razor KlassenbibliothekReplace Identity 2.0 UI with the Identity 2.1 Razor Class Library
In diesem Abschnitt werden die Schritte zum Ersetzen des generierten Codes der ASP.net Core 2,0-Vorlage Identity durch die- ASP.NET Core Identity Razor Klassenbibliothekbeschrieben.This section outlines the steps to replace the ASP.NET Core 2.0 template generated Identity code with the ASP.NET Core Identity Razor Class Library. Die folgenden Schritte gelten für ein Razor pages-Projekt, aber der Ansatz für ein MVC-Projekt ist ähnlich.The following steps are for a Razor Pages project, but the approach for an MVC project is similar.
- Überprüfen , ob die Projektdatei für die Verwendung von 2,1 Versionen aktualisiert wurdeVerify the project file is updated to use 2.1 versions
- Löschen Sie die folgenden Ordner und alle darin aufgeführten Dateien:Delete the following folders and all the files in them:
- ControllerControllers
- Seiten/Konto/Pages/Account/
- ErweiterungenExtensions
- Erstellen Sie das Projekt.Build the project.
- Gerüst Identity in Ihrem Projekt:Scaffold Identity into your project:
- Wählen Sie die Projekte aus, die die Datei _ Layout. cshtml beenden.Select the projects exiting _Layout.cshtml file.
- Wählen Sie das + Symbol auf der rechten Seite der Datenkontext Klasse aus.Select the + icon on the right side of the Data context class. Übernehmen Sie den Standardnamen.Accept the default name.
- Wählen Sie Hinzufügen aus, um eine neue Datenkontext Klasse zu erstellen.Select Add to create a new Data context class. Das Erstellen eines neuen Daten Kontexts ist für das Gerüst erforderlich.Creating a new data context is required for to scaffold. Sie entfernen den neuen Datenkontext im nächsten Abschnitt.You remove the new data context in the next section.
Nach Gerüstbau aktualisieren IdentityUpdate after scaffolding Identity
Löschen Sie die vom Identity Gerüst erstellte, von
IdentityDbContext
abgeleitete Klasse im Ordner " Areas/ Identity /Data/ ".Delete the Identity scaffolder generatedIdentityDbContext
derived class in the Areas/Identity/Data/ folder.Bereiche/ Identity / Identity HostingStartup.cs löschen.Delete Areas/Identity/IdentityHostingStartup.cs.
Aktualisieren Sie die Datei " _ loginpartial. cshtml ":Update the _LoginPartial.cshtml file:
- Verschieben Sie pages/ _ loginpartial. cshtml in pages/Shared/ _ loginpartial. cshtml.Move Pages/_LoginPartial.cshtml to Pages/Shared/_LoginPartial.cshtml.
- Fügen Sie
asp-area="Identity"
dem Formular und den Anker Links hinzu.Addasp-area="Identity"
to the form and anchor links. - Aktualisieren Sie das-
<form />
Element auf<form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/Index", new { area = "" })" method="post" id="logoutForm" class="navbar-right">
.Update the<form />
element to<form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/Index", new { area = "" })" method="post" id="logoutForm" class="navbar-right">
.
Der folgende Code zeigt die aktualisierte Datei " _ loginpartial. cshtml ":The following code shows the updated _LoginPartial.cshtml file:
@using Microsoft.AspNetCore.Identity @inject SignInManager<ApplicationUser> SignInManager @inject UserManager<ApplicationUser> UserManager @if (SignInManager.IsSignedIn(User)) { <form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/Index", new { area = "" })" method="post" id="logoutForm" class="navbar-right"> <ul class="nav navbar-nav navbar-right"> <li> <a asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> </li> <li> <button type="submit" class="btn btn-link navbar-btn navbar-link">Log out</button> </li> </ul> </form> } else { <ul class="nav navbar-nav navbar-right"> <li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li> <li><a asp-area="Identity" asp-page="/Account/Login">Log in</a></li> </ul> }
Aktualisieren Sie ConfigureServices
mit folgendem Code:Update ConfigureServices
with the following code:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
// Register no-op EmailSender used by account confirmation and password reset
// during development
services.AddSingleton<IEmailSender, EmailSender>();
}
Änderungen an Razor Seiten Projekt Razor DateienChanges to Razor Pages projects Razor files
Die LayoutdateiThe layout file
Verschieben von pages/ _ Layout. cshtml in pages/Shared/ _ Layout. cshtmlMove Pages/_Layout.cshtml to Pages/Shared/_Layout.cshtml
Ändern Sie in Areas/ Identity /pages/ _ viewstart. cshtml in
Layout = "/Pages/_Layout.cshtml"
Layout = "/Pages/Shared/_Layout.cshtml"
.In Areas/Identity/Pages/_ViewStart.cshtml, changeLayout = "/Pages/_Layout.cshtml"
toLayout = "/Pages/Shared/_Layout.cshtml"
.Die Datei " _ Layout. cshtml " weist die folgenden Änderungen auf:The _Layout.cshtml file has the following changes:
<partial name="_CookieConsentPartial" />
wird hinzugefügt.<partial name="_CookieConsentPartial" />
is added. Weitere Informationen finden Sie unter DSGVO-Unterstützung in ASP.NET Core.For more information, see GDPR support in ASP.NET Core.- jQuery ändert sich von 2.2.0 in 3.3.1.jQuery changes from 2.2.0 to 3.3.1.
_Validationscriptspartial. cshtml_ValidationScriptsPartial.cshtml
- Seiten/ _ Validationscriptspartial. cshtml wechselt zu pages/Shared/ _ validationscriptspartial. cshtml.Pages/_ValidationScriptsPartial.cshtml moves to Pages/Shared/_ValidationScriptsPartial.cshtml.
- " jQuery. Validate/1.14.0 " ändert sich in " jQuery. Validate/1.17.0".jquery.validate/1.14.0 changes to jquery.validate/1.17.0.
Neue DateienNew files
Die folgenden Dateien werden hinzugefügt:The following files are added:
- Privacy.cshtmlPrivacy.cshtml
- Privacy.cshtml.csPrivacy.cshtml.cs
Informationen zu den vorangehenden Dateien finden Sie unter dsgvo- Unterstützung in ASP.net Core .See GDPR support in ASP.NET Core for information on the preceding files.
Änderungen an MVC-Projekt Razor DateienChanges to MVC projects Razor files
Die LayoutdateiThe layout file
Die Datei " Layout. cshtml " weist die folgenden Änderungen auf:The Layout.cshtml file has the following changes:
<partial name="_CookieConsentPartial" />
wird hinzugefügt.<partial name="_CookieConsentPartial" />
is added.- jQuery-Änderungen von 2.2.0 in 3.3.1jQuery changes from 2.2.0 to 3.3.1
_Validationscriptspartial. cshtml_ValidationScriptsPartial.cshtml
jQuery. Validate/1.14.0 ändert sich in " jQuery. Validate/1.17.0".jquery.validate/1.14.0 changes to jquery.validate/1.17.0
Neue Dateien und AktionsmethodenNew files and action methods
Folgendes wird hinzugefügt:The following are added:
- Views/Home/Privacy. cshtmlViews/Home/Privacy.cshtml
- Die
Privacy
Aktionsmethode wird dem Home-Controller hinzugefügt.ThePrivacy
action method is added to the Home controller.
Informationen zu den vorangehenden Dateien finden Sie unter dsgvo- Unterstützung in ASP.net Core .See GDPR support in ASP.NET Core for information on the preceding files.
Änderungen am launchSettings.jsin der DateiChanges to the launchSettings.json file
Da ASP.net Core Apps jetzt HTTPS standardmäßig verwenden, haben sich die Eigenschaften/launchSettings.js der Datei geändert.As ASP.NET Core apps now use HTTPS by default, the Properties/launchSettings.json file has changed.
Der folgende JSON-Code zeigt den früheren 2,0-Vorlagen generierten launchSettings.jsfür die Datei:The following JSON shows the earlier 2.0 template-generated launchSettings.json file:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:1799/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApp1": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:1798/"
}
}
}
Der folgende JSON-Code zeigt die neue, von 2,1 Vorlagen generierte launchSettings.jsfür die Datei:The following JSON shows the new 2.1 template-generated launchSettings.json file:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:39191",
"sslPort": 44390
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApp1": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Weitere Informationen finden Sie unter Erzwingen von HTTPS in ASP.net Core.For more information, see Erzwingen von HTTPS in ASP.net Core.
Breaking ChangesBreaking changes
Fileresult-Bereichs KopfzeileFileResult Range header
FileResult verarbeitet den Accept-Ranges- Header nicht mehr standardmäßig.FileResult no longer processes the Accept-Ranges header by default. Um den- Accept-Ranges
Header zu aktivieren, legen EnableRangeProcessing Sie auf fest true
.To enable the Accept-Ranges
header, set EnableRangeProcessing to true
.
Header "controllerbase. File" und "PhysicalFile Range"ControllerBase.File and PhysicalFile Range header
Die folgenden ControllerBase Methoden verarbeiten den Accept-Ranges- Header nicht mehr standardmäßig:The following ControllerBase methods no longer processes the Accept-Ranges header by default:
- Über Ladungen von " controllerbase. File "Overloads of ControllerBase.File
- Controllerbase. PhysicalFileControllerBase.PhysicalFile
Accept-Ranges
Legen Sie den-Parameter auf fest, um den-Header zu aktivieren EnableRangeProcessing
true
.To enable the Accept-Ranges
header, set the EnableRangeProcessing
parameter to true
.
Weitere ÄnderungenAdditional changes
- Wenn die APP unter Windows mit IIS gehostet wird, installieren Sie das aktuellste .net Core-Hostingpaket.If hosting the app on Windows with IIS, install the latest .NET Core Hosting Bundle.
- SetCompatibilityVersionSetCompatibilityVersion
- Libuv-Transport KonfigurationLibuv transport configuration