Upgrade von ASP.NET MVC und Web-API auf ASP.NET Core MVC
In diesem Artikel erfahren Sie, wie Sie ein Upgrade einer ASP.NET Framework-MVC- oder Web-API-App auf ASP.NET Core MVC durchführen, indem Sie den Visual Studio .NET-Upgrade-Assistenten und den Ansatz für inkrementelle Updates verwenden.
Upgrade mit dem .NET-Upgrade-Assistenten
Wenn Ihr .NET Framework Projekt über erforderliche unterstützende Bibliotheken in der Projektmappe verfügt, sollten diese nach Möglichkeit auf .NET Standard 2.0 aktualisiert werden. Weitere Informationen finden Sie unter Upgrade unterstützender Bibliotheken.
- Installieren Sie die Visual Studio-Erweiterung des .NET-Upgrade-Assistenten .
- Öffnen Sie die ASP.NET MVC- oder Web-API-Lösung in Visual Studio.
- Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, um ein Upgrade durchzuführen, und wählen Sie Upgrade aus. Wählen Sie Paralleles inkrementelles Projektupgrade aus. Dies ist die einzige Upgradeoption.
- Wählen Sie als Upgradeziel Die Option Neues Projekt aus.
- Benennen Sie das Projekt, und wählen Sie die Vorlage aus. Wenn das Projekt, das Sie migrieren, ein API-Projekt ist, wählen Sie ASP.NET Core Web-API aus. Wenn es sich um ein MVC-Projekt oder eine MVC- und Web-API handelt, wählen Sie ASP.NET Core MVC aus.
- Wählen Sie Weiter aus.
- Wählen Sie die Zielframeworkversion und dann Weiter aus. Weitere Informationen finden Sie unter Supportrichtlinie für .NET und .NET Core.
- Überprüfen Sie die Zusammenfassung der Änderungen, und wählen Sie dann Fertig stellen aus.
- Der Zusammenfassungsschrittwird
<Framework Project>
jetzt über den Yarp-Proxy mit verbunden<Framework ProjectCore>
. und ein Kreisdiagramm mit den migrierten Endpunkten. Wählen Sie Controller aktualisieren aus, und wählen Sie dann einen Controller aus, der aktualisiert werden soll. - Wählen Sie die zu aktualisierende Komponente und dann Upgradeauswahl aus.
Inkrementelles Update
Führen Sie die Schritte unter Erste Schritte mit inkrementellen ASP.NET aus, um die Migration zu ASP.NET Core, um den Updatevorgang fortzusetzen.
In diesem Artikel erfahren Sie, wie Sie mit der Migration eines ASP.NET MVC-Projekts zu ASP.NET Core MVC beginnen. Dabei werden die zugehörigen Änderungen von ASP.NET MVC hervorgehoben.
Die Migration von ASP.NET MVC ist ein mehrstufiger Prozess. In diesem Artikel wird Folgendes behandelt:
- Ersteinrichtung.
- Grundlegende Controller und Ansichten.
- Statischer Inhalt.
- Clientseitige Abhängigkeiten.
Informationen zum Migrieren von Konfiguration und Identity Code finden Sie unter Migrieren der Konfiguration zum ASP.NET Core und Migrieren der Authentifizierung und Identity zu ASP.NET Core.
Voraussetzungen
Visual Studio 2019 Version 16.4 oder höher mit der Workload ASP.NET und Webentwicklung.
Erstellen des Starter-ASP.NET MVC-Projekts
Erstellen Sie ein Beispiel ASP.NET zu migrierenden MVC-Projekt in Visual Studio:
- Klicken Sie im Menü Datei auf Neu>Projekt.
- Wählen Sie ASP.NET Webanwendung (.NET Framework) und dann Weiter aus.
- Nennen Sie das Projekt WebApp1, damit der Namespace mit dem im nächsten Schritt erstellten ASP.NET Core Projekt übereinstimmt. Klicken Sie auf Erstellen.
- Wählen Sie MVC und dann Erstellen aus.
Erstellen des ASP.NET Core-Projekts
Erstellen Sie eine neue Projektmappe mit einem neuen ASP.NET Core Projekt, zu dem Sie migrieren möchten:
- Starten Sie eine zweite Instanz von Visual Studio.
- Klicken Sie im Menü Datei auf Neu>Projekt.
- Klicken Sie auf ASP.NET Core-Webanwendung und dann auf Weiter.
- Nennen Sie das Projekt im Dialogfeld Neues Projekt konfigurierenwebApp1.
- Legen Sie den Speicherort auf ein anderes Verzeichnis als das vorherige Projekt fest, um denselben Projektnamen zu verwenden. Die Verwendung desselben Namespace erleichtert das Kopieren von Code zwischen den beiden Projekten. Klicken Sie auf Erstellen.
- Vergewissern Sie sich, dass im Dialogfeld Neue ASP.NET Core-Webanwendung erstellen die Optionen .NET Core und ASP.NET Core 3.1 ausgewählt sind. Wählen Sie die Projektvorlage Webanwendung (Model-View-Controller) und dann Erstellen aus.
Konfigurieren des ASP.NET Core Standorts für die Verwendung von MVC
In projekten ASP.NET Core 3.0 und höher ist .NET Framework kein unterstütztes Zielframework mehr. Ihr Projekt muss auf .NET Core ausgerichtet sein. Das ASP.NET Core freigegebenes Framework, das MVC enthält, ist Teil der Installation der .NET Core-Runtime. Bei Verwendung des Microsoft.NET.Sdk.Web
SDK in der Projektdatei wird automatisch auf das freigegebene Framework verwiesen:
<Project Sdk="Microsoft.NET.Sdk.Web">
Weitere Informationen finden Sie unter Framework-Referenz.
In ASP.NET Core die Startup
-Klasse:
- Ersetzt Global.asax.
- Behandelt alle App-Startaufgaben.
Weitere Informationen finden Sie unter Anwendungsstart in ASP.NET Core.
Öffnen Sie im projekt ASP.NET Core die Startup.cs
Datei:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core Apps müssen sich für Frameworkfeatures mit Middleware entscheiden. Der vorherige vorlagengenerierte Code fügt die folgenden Dienste und Middleware hinzu:
- Die AddControllersWithViews Erweiterungsmethode registriert die MVC-Dienstunterstützung für Controller, API-bezogene Features und Sichten. Weitere Informationen zu MVC-Dienstregistrierungsoptionen finden Sie unter MVC-Dienstregistrierung.
- Die UseStaticFiles Erweiterungsmethode fügt den Handler für
Microsoft.AspNetCore.StaticFiles
statische Dateien hinzu. DieUseStaticFiles
Erweiterungsmethode muss vorUseRouting
aufgerufen werden. Weitere Informationen finden Sie unter Statische Dateien in ASP.NET Core. - Die UseRouting Erweiterungsmethode fügt Routing hinzu. Weitere Informationen finden Sie unter Routing in ASP.NET Core.
Diese vorhandene Konfiguration enthält, was erforderlich ist, um das Beispiel ASP.NET MVC-Projekt zu migrieren. Weitere Informationen zu ASP.NET Core Middlewareoptionen finden Sie unter App-Start in ASP.NET Core.
Migrieren von Controllern und Ansichten
Im ASP.NET Core-Projekt wird eine neue leere Controllerklasse und Ansichtsklasse hinzugefügt, die als Platzhalter mit denselben Namen wie die Controller- und Ansichtsklassen in jedem ASP.NET MVC-Projekt verwendet wird, aus dem migriert werden soll.
Das ASP.NET Core WebApp1-Projekt enthält bereits einen minimalen Beispielcontroller und eine Ansicht mit demselben Namen wie das ASP.NET MVC-Projekt. Diese dienen also als Platzhalter für den ASP.NET MVC-Controller und ansichten, die aus dem ASP.NET MVC WebApp1-Projekt migriert werden sollen.
- Kopieren Sie die Methoden aus dem ASP.NET MVC
HomeController
, um die neuen ASP.NET CoreHomeController
Methoden zu ersetzen. Es ist nicht erforderlich, den Rückgabetyp der Aktionsmethoden zu ändern. Der Rückgabetyp der controller-Aktionsmethode der integrierten MVC-Vorlage ASP.NET istActionResult; in ASP.NET Core MVC werden stattdessen die Aktionsmethoden zurückgegebenIActionResult
.ActionResult
implementiertIActionResult
. - Klicken Sie im ASP.NET Core-Projekt mit der rechten Maustaste auf das Verzeichnis Views/Home, und wählen SieVorhandenes Elementhinzufügen> aus.
- Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zum verzeichnis Views/desHome MVC WebApp1-Projekts ASP.NET.
- Wählen Sie die
About.cshtml
Dateien ,Contact.cshtml
undIndex.cshtml
Razor zeigen Sie aus, und wählen Sie dann Hinzufügen aus, um die vorhandenen Dateien zu ersetzen.
Weitere Informationen finden Sie unter Verarbeiten von Anforderungen mit Controllern in ASP.NET Core MVC und Ansichten in ASP.NET Core MVC.
Testen der einzelnen Methoden
Jeder Controllerendpunkt kann getestet werden. Layout und Stile werden jedoch später im Dokument behandelt.
- Führen Sie die ASP.NET Core-App aus.
- Rufen Sie die gerenderten Ansichten aus dem Browser in der ausgeführten ASP.NET Core-App auf, indem Sie die aktuelle Portnummer durch die Portnummer ersetzen, die im ASP.NET Core-Projekt verwendet wird. Beispiel:
https://localhost:44375/home/about
.
Migrieren statischer Inhalte
In ASP.NET MVC 5 und früher wurden statische Inhalte aus dem Stammverzeichnis des Webprojekts gehostet und mit serverseitigen Dateien gemischt. In ASP.NET Core werden statische Dateien im Webstammverzeichnis des Projekts gespeichert. Das Standardverzeichnis ist {content root}/wwwroot, kann jedoch geändert werden. Weitere Informationen finden Sie unter Statische Dateien in ASP.NET Core.
Kopieren Sie den statischen Inhalt aus dem ASP.NET MVC WebApp1-Projekt in das Verzeichnis wwwroot im ASP.NET Core WebApp1-Projekt:
- Klicken Sie im ASP.NET Core-Projekt mit der rechten Maustaste auf das Verzeichnis wwwroot, und wählen SieVorhandenes Elementhinzufügen> aus.
- Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zum ASP.NET MVC WebApp1-Projekt .
- Wählen Sie die Datei favicon.ico und dann Hinzufügen aus, und ersetzen Sie die vorhandene Datei.
Migrieren der Layoutdateien
Kopieren Sie die ASP.NET MVC-Projektlayoutdateien in das ASP.NET Core-Projekt:
- Klicken Sie im ASP.NET Core Projekt mit der rechten Maustaste auf das Verzeichnis Ansichten, und wählen SieVorhandenes Elementhinzufügen> aus.
- Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zum Verzeichnis Ansichten des ASP.NET MVC WebApp1-Projekts.
- Wählen Sie die
_ViewStart.cshtml
Datei und dann Hinzufügen aus.
Kopieren Sie die ASP.NET freigegebenen Layoutdateien des MVC-Projekts in das ASP.NET Core-Projekt:
- Klicken Sie im projekt ASP.NET Core mit der rechten Maustaste auf das Verzeichnis Views/Shared, und wählen SieVorhandenes Elementhinzufügen> aus.
- Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zum verzeichnis Views/Shared des MVC WebApp1-Projekts ASP.NET.
- Wählen Sie die
_Layout.cshtml
Datei und dann Hinzufügen aus, um die vorhandene Datei zu ersetzen.
Öffnen Sie im projekt ASP.NET Core die _Layout.cshtml
Datei. Nehmen Sie die folgenden Änderungen vor, um dem unten gezeigten vollständigen Code zu entsprechen:
Aktualisieren Sie die Bootstrap-CSS-Einbindung so, dass sie mit dem folgenden vollständigen Code übereinstimmt:
- Ersetzen Sie durch
@Styles.Render("~/Content/css")
ein<link>
zu ladendebootstrap.css
Element (siehe unten). - Entfernen Sie
@Scripts.Render("~/bundles/modernizr")
.
Das vollständige Ersetzungsmarkup für die Bootstrap-CSS-Integration:
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
Aktualisieren Sie die JavaScript- und jQuery- und Bootstrap-Integration, um dem unten angegebenen vollständigen Code zu entsprechen:
- Ersetzen Sie durch
@Scripts.Render("~/bundles/jquery")
ein<script>
-Element (siehe unten). - Ersetzen Sie durch
@Scripts.Render("~/bundles/bootstrap")
ein<script>
-Element (siehe unten).
Das vollständige Ersetzungsmarkup für die JavaScript-Integration von jQuery und Bootstrap:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
Die aktualisierte _Layout.cshtml
Datei wird unten gezeigt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
Zeigen Sie die Website im Browser an. Es sollte mit den erwarteten Stilen gerendert werden.
Konfigurieren der Bündelung und Minimierung
ASP.NET Core ist mit mehreren Open-Source-Bündelungs- und Minimierungslösungen wie WebOptimizer und anderen ähnlichen Bibliotheken kompatibel. ASP.NET Core bietet keine native Bündelungs- und Minimierungslösung. Informationen zum Konfigurieren der Bündelung und Minimierung finden Sie unter Bündelung und Minimierung.
Beheben von HTTP 500-Fehlern
Es gibt viele Probleme, die zu einer HTTP 500-Fehlermeldung führen können, die keine Informationen zur Ursache des Problems enthält. Wenn die Views/_ViewImports.cshtml
Datei beispielsweise einen Namespace enthält, der im Projekt nicht vorhanden ist, wird ein HTTP 500-Fehler generiert. Standardmäßig wird in ASP.NET Core-Apps die UseDeveloperExceptionPage
Erweiterung hinzugefügt IApplicationBuilder
und ausgeführt, wenn die Umgebung "Entwicklung" lautet. Dies wird im folgenden Code beschrieben:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core konvertiert nicht behandelte Ausnahmen in HTTP 500-Fehlerantworten. Normalerweise sind in diesen Antworten keine Fehlerdetails enthalten, um die Offenlegung potenziell vertraulicher Informationen über den Server zu verhindern. Weitere Informationen finden Sie unter Entwickler-Ausnahmeseite.
Nächste Schritte
Zusätzliche Ressourcen
In diesem Artikel erfahren Sie, wie Sie mit der Migration eines ASP.NET MVC-Projekts zu ASP.NET Core MVC 2.2 beginnen. Dabei werden viele der Dinge hervorgehoben, die sich gegenüber ASP.NET MVC geändert haben. Die Migration von ASP.NET MVC ist ein mehrstufiger Prozess. In diesem Artikel wird Folgendes behandelt:
- Anfangssetup
- Grundlegende Controller und Ansichten
- Statischer Inhalt
- Clientseitige Abhängigkeiten.
Informationen zum Migrieren von Konfiguration und Identity Code finden Sie unter Migrieren der Konfiguration zum ASP.NET Core und Migrieren der Authentifizierung und Identity zu ASP.NET Core.
Hinweis
Die Versionsnummern in den Beispielen sind möglicherweise nicht aktuell. Aktualisieren Sie die Projekte entsprechend.
Erstellen des Starter-ASP.NET MVC-Projekts
Um das Upgrade zu veranschaulichen, erstellen wir zunächst eine ASP.NET MVC-App. Erstellen Sie sie mit dem Namen WebApp1, damit der Namespace mit dem im nächsten Schritt erstellten ASP.NET Core-Projekt übereinstimmt.
Optional: Ändern Sie den Namen der Projektmappe von WebApp1 in Mvc5. Visual Studio zeigt den neuen Projektmappennamen (Mvc5) an, wodurch es einfacher ist, dieses Projekt vom nächsten Projekt zu unterscheiden.
Erstellen des ASP.NET Core-Projekts
Erstellen Sie eine neue leere ASP.NET Core Web-App mit dem gleichen Namen wie das vorherige Projekt (WebApp1), damit die Namespaces in den beiden Projekten übereinstimmen. Derselbe Namespace erleichtert das Kopieren von Code zwischen den beiden Projekten. Erstellen Sie dieses Projekt in einem anderen Verzeichnis als das vorherige Projekt, um denselben Namen zu verwenden.
- Optional: Erstellen Sie mithilfe der Projektvorlage Webanwendung eine neue ASP.NET Core-App. Nennen Sie das Projekt WebApp1, und wählen Sie die Authentifizierungsoption Einzelne Benutzerkonten aus. Benennen Sie diese App in FullAspNetCore um. Das Erstellen dieses Projekts spart Zeit bei der Konvertierung. Das Endergebnis kann im von der Vorlage generierten Code angezeigt werden, Code kann in das Konvertierungsprojekt kopiert oder mit dem von der Vorlage generierten Projekt verglichen werden.
Konfigurieren des Standorts für die Verwendung von MVC
- Wenn Sie .NET Core als Ziel verwenden, wird standardmäßig auf das Microsoft.AspNetCore.App Metapaket verwiesen. Dieses Paket enthält Pakete, die häufig von MVC-Apps verwendet werden. Wenn sie .NET Framework, müssen Paketverweise einzeln in der Projektdatei aufgeführt werden.
Microsoft.AspNetCore.Mvc
ist das ASP.NET Core MVC-Framework. Microsoft.AspNetCore.StaticFiles
ist der Handler für statische Dateien. ASP.NET Core Apps sich explizit für Middleware entscheiden, z. B. für die Bereitstellung statischer Dateien. Weitere Informationen finden Sie im Artikel zu statischen Dateien.
- Öffnen Sie die
Startup.cs
Datei, und ändern Sie den Code so, dass er den folgenden Code erfüllt:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
Die UseStaticFiles Erweiterungsmethode fügt den Handler für statische Dateien hinzu. Weitere Informationen finden Sie unter Anwendungsstart und -routing.
Hinzufügen eines Controllers und einer Ansicht
In diesem Abschnitt werden ein minimaler Controller und eine Ansicht hinzugefügt, die als Platzhalter für den ASP.NET MVC-Controller und die im nächsten Abschnitt migrierten Ansichten dienen.
Fügen Sie ein Controller-Verzeichnis hinzu.
Fügen Sie dem Verzeichnis Controllers eine Controllerklasse mit dem Namen
HomeController.cs
hinzu.
Fügen Sie ein Views-Verzeichnis hinzu.
Fügen Sie ein Views/Home -Verzeichnis hinzu.
Fügen Sie dem Verzeichnis Views/Homeeine Razor Ansicht mit dem Namen
Index.cshtml
hinzu.
Die Projektstruktur ist unten dargestellt:
Ersetzen Sie den Inhalt der Views/Home/Index.cshtml
Datei durch das folgende Markup:
<h1>Hello world!</h1>
Führen Sie die App aus.
Weitere Informationen finden Sie unter Controller und Ansichten.
Für die folgende Funktionalität ist eine Migration aus dem Beispielprojekt ASP.NET MVC zum ASP.NET Core-Projekt erforderlich:
clientseitige Inhalte (CSS, Schriftarten und Skripts)
Controller
views
Modelle
Bündelung
Filter
Melden Sie sich an/aus, Identity (Dies wird im nächsten Tutorial ausgeführt.)
Controller und Ansichten
Kopieren Sie jede der Methoden aus dem ASP.NET MVC
HomeController
in das neueHomeController
. In ASP.NET MVC ist ActionResultder Controlleraktionsmethode-Rückgabetyp der integrierten Vorlage; in ASP.NET Core MVC geben die Aktionsmethoden stattdessen zurückIActionResult
.ActionResult
IActionResult
implementiert, sodass der Rückgabetyp der Aktionsmethoden nicht geändert werden muss.Kopieren Sie die
About.cshtml
Dateien ,Contact.cshtml
- undIndex.cshtml
Razor -Ansichtsdateien aus dem ASP.NET MVC-Projekt in das ASP.NET Core-Projekt.
Testen der einzelnen Methoden
Die Layoutdatei und die Stile wurden noch nicht migriert, sodass die gerenderten Ansichten nur den Inhalt in den Ansichtsdateien enthalten. Die erstellten Layoutdateilinks für die About
Ansichten und Contact
sind noch nicht verfügbar.
Rufen Sie die gerenderten Ansichten aus dem Browser in der ausgeführten ASP.NET Kern-App auf, indem Sie die aktuelle Portnummer durch die portnummer ersetzen, die im ASP.NET Kernprojekt verwendet wird. Beispiel: https://localhost:44375/home/about
.
Beachten Sie das Fehlen von Formatierungs- und Menüelementen. Das Formatieren wird im nächsten Abschnitt behoben.
Statischer Inhalt
In ASP.NET MVC 5 und früher wurden statische Inhalte aus dem Stamm des Webprojekts gehostet und mit serverseitigen Dateien vermischt. In ASP.NET Core werden statische Inhalte im Verzeichnis wwwroot gehostet. Kopieren Sie den statischen Inhalt aus der ASP.NET MVC-App in das Verzeichnis wwwroot im ASP.NET Core-Projekt. In dieser Beispielkonvertierung:
- Kopieren Sie die Datei favicon.ico aus dem ASP.NET MVC-Projekt in das Verzeichnis wwwroot im ASP.NET Core-Projekt.
Das ASP.NET MVC-Projekt verwendet Bootstrap für die Formatierung und speichert die Bootstrap-Dateien in den Verzeichnissen Inhalt und Skripts . Die Vorlage, die das ASP.NET MVC-Projekt generiert hat, verweist in der Layoutdatei (Views/Shared/_Layout.cshtml
) auf Bootstrap. Die bootstrap.js
Dateien und bootstrap.css
können aus dem ASP.NET MVC-Projekt in das Verzeichnis wwwroot im neuen Projekt kopiert werden. Stattdessen wird in diesem Dokument im nächsten Abschnitt unterstützung für Bootstrap (und andere clientseitige Bibliotheken) mithilfe von CDNs hinzugefügt.
Migrieren der Layoutdatei
Kopieren Sie die
_ViewStart.cshtml
Datei aus dem Verzeichnis Views des ASP.NET MVC-Projekts in das Verzeichnis Views des ASP.NET Core Projekts. Die_ViewStart.cshtml
Datei wurde in ASP.NET Core MVC nicht geändert.Erstellen Sie ein Views/Shared-Verzeichnis .
Optional: Kopieren Sie
_ViewImports.cshtml
das Views-Verzeichnis des FullAspNetCore-MVC-Projekts in das Verzeichnis Views des ASP.NET Core Projekts. Entfernen Sie jede Namespacedeklaration in der_ViewImports.cshtml
Datei. Die_ViewImports.cshtml
Datei stellt Namespaces für alle Ansichtsdateien bereit und bringt Taghilfsprogramme ein. Taghilfsprogramme werden in der neuen Layoutdatei verwendet. Die_ViewImports.cshtml
Datei ist für ASP.NET Core neu.Kopieren Sie die
_Layout.cshtml
Datei aus dem Verzeichnis Views/Shared des ASP.NET MVC-Projekts in das Verzeichnis Views/Shared des ASP.NET Core Projekts.
Öffnen Sie _Layout.cshtml
die Datei, und nehmen Sie die folgenden Änderungen vor (der fertige Code wird unten gezeigt):
Ersetzen Sie durch
@Styles.Render("~/Content/css")
ein<link>
zu ladendebootstrap.css
Element (siehe unten).Entfernen Sie
@Scripts.Render("~/bundles/modernizr")
.Kommentieren Sie die
@Html.Partial("_LoginPartial")
Zeile aus (umschließen Sie die Zeile mit@*...*@
). Weitere Informationen finden Sie unter Migrieren der Authentifizierung und Identity zu ASP.NET CoreErsetzen Sie durch
@Scripts.Render("~/bundles/jquery")
ein<script>
-Element (siehe unten).Ersetzen Sie durch
@Scripts.Render("~/bundles/bootstrap")
ein<script>
-Element (siehe unten).
Das Ersatzmarkup für die Bootstrap-CSS-Aufnahme:
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
Das Ersatzmarkup für die JavaScript-Aufnahme jQuery und Bootstrap:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
Die aktualisierte _Layout.cshtml
Datei ist unten dargestellt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
Zeigen Sie die Website im Browser an. Es sollte jetzt ordnungsgemäß geladen werden, wobei die erwarteten Stile vorhanden sind.
- Optional: Versuchen Sie, die neue Layoutdatei zu verwenden. Kopieren Sie die Layoutdatei aus dem Projekt FullAspNetCore . Die neue Layoutdatei verwendet Taghilfsprogramme und enthält weitere Verbesserungen.
Konfigurieren der Bündelung und Minimierung
Informationen zum Konfigurieren der Bündelung und Minimierung finden Sie unter Bündelung und Minimierung.
Beheben von HTTP 500-Fehlern
Es gibt viele Probleme, die zu HTTP 500-Fehlermeldungen führen können, die keine Informationen zur Quelle des Problems enthalten. Wenn die Views/_ViewImports.cshtml
Datei beispielsweise einen Namespace enthält, der im Projekt nicht vorhanden ist, wird ein HTTP 500-Fehler generiert. Standardmäßig wird in ASP.NET Core-Apps die UseDeveloperExceptionPage
Erweiterung hinzugefügt IApplicationBuilder
und ausgeführt, wenn die Konfiguration Entwicklung ist. Sehen Sie sich ein Beispiel im folgenden Code an:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core konvertiert nicht behandelte Ausnahmen in HTTP 500-Fehlerantworten. Normalerweise werden in diesen Antworten keine Fehlerdetails enthalten, um die Offenlegung potenziell vertraulicher Informationen über den Server zu verhindern. Weitere Informationen finden Sie unter Entwickler-Ausnahmeseite.
Zusätzliche Ressourcen
In diesem Artikel erfahren Sie, wie Sie mit der Migration eines ASP.NET MVC-Projekts zu ASP.NET Core MVC 2.1 beginnen. Dabei werden viele der Dinge hervorgehoben, die sich von ASP.NET MVC geändert haben. Die Migration von ASP.NET MVC ist ein mehrstufiger Prozess. In diesem Artikel wird Folgendes behandelt:
- Anfangssetup
- Grundlegende Controller und Ansichten
- Statischer Inhalt
- Clientseitige Abhängigkeiten.
Informationen zum Migrieren von Konfiguration und Identity Code finden Sie unter Migrieren der Konfiguration zum ASP.NET Core und Migrieren der Authentifizierung und Identity zu ASP.NET Core.
Hinweis
Die Versionsnummern in den Beispielen sind möglicherweise nicht aktuell, und aktualisieren Sie die Projekte entsprechend.
Erstellen des Starter-ASP.NET MVC-Projekts
Um das Upgrade zu veranschaulichen, erstellen wir zunächst eine ASP.NET MVC-App. Erstellen Sie es mit dem Namen WebApp1, damit der Namespace mit dem im nächsten Schritt erstellten ASP.NET Core Projekt übereinstimmt.
Optional: Ändern Sie den Namen der Projektmappe von WebApp1 in Mvc5. Visual Studio zeigt den neuen Projektmappennamen (Mvc5) an, wodurch es einfacher wird, dieses Projekt vom nächsten Projekt zu unterscheiden.
Erstellen des ASP.NET Core-Projekts
Erstellen Sie eine neue leere ASP.NET Core Web-App mit demselben Namen wie das vorherige Projekt (WebApp1), damit die Namespaces in den beiden Projekten übereinstimmen. Derselbe Namespace erleichtert das Kopieren von Code zwischen den beiden Projekten. Erstellen Sie dieses Projekt in einem anderen Verzeichnis als das vorherige Projekt, um denselben Namen zu verwenden.
- Optional: Erstellen Sie mithilfe der Projektvorlage Webanwendung eine neue ASP.NET Core-App. Nennen Sie das Projekt WebApp1, und wählen Sie die Authentifizierungsoption Einzelne Benutzerkonten aus. Benennen Sie diese App in FullAspNetCore um. Das Erstellen dieses Projekts spart Zeit bei der Konvertierung. Das Endergebnis kann im von der Vorlage generierten Code angezeigt, code kann in das Konvertierungsprojekt kopiert oder mit dem von der Vorlage generierten Projekt verglichen werden.
Konfigurieren der Website für die Verwendung von MVC
- Bei der Ausrichtung auf .NET Core wird standardmäßig auf das Microsoft.AspNetCore.App Metapaket verwiesen. Dieses Paket enthält Pakete, die häufig von MVC-Apps verwendet werden. Wenn die Zielrichtung .NET Framework, müssen Paketverweise einzeln in der Projektdatei aufgeführt werden.
Microsoft.AspNetCore.Mvc
ist das ASP.NET Core MVC-Framework. Microsoft.AspNetCore.StaticFiles
ist der statische Dateihandler. ASP.NET Core Apps sich explizit für Middleware entscheiden, z. B. für die Bereitstellung statischer Dateien. Weitere Informationen finden Sie im Artikel zu statischen Dateien.
- Öffnen Sie die
Startup.cs
Datei, und ändern Sie den Code wie folgt:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
Die UseStaticFiles Erweiterungsmethode fügt den statischen Dateihandler hinzu. Die UseMvc
Erweiterungsmethode fügt Routing hinzu. Weitere Informationen finden Sie unter Anwendungsstart und -routing.
Hinzufügen eines Controllers und einer Ansicht
In diesem Abschnitt werden ein minimaler Controller und eine Ansicht hinzugefügt, die als Platzhalter für den ASP.NET MVC-Controller und die im nächsten Abschnitt migrierten Ansichten dienen.
Fügen Sie ein Controller-Verzeichnis hinzu.
Fügen Sie dem Verzeichnis Controller eine Controllerklasse mit dem Namen hinzu
HomeController.cs
.
Fügen Sie ein Views-Verzeichnis hinzu.
Fügen Sie ein Views/Home Verzeichnis hinzu.
Fügen Sie dem Verzeichnis Views/-HomeVerzeichnis eine Razor Ansicht mit dem Namen hinzu
Index.cshtml
.
Die Projektstruktur ist unten dargestellt:
Ersetzen Sie den Inhalt der Views/Home/Index.cshtml
Datei durch das folgende Markup:
<h1>Hello world!</h1>
Führen Sie die App aus.
Weitere Informationen finden Sie unter Controller und Ansichten.
Für die folgende Funktionalität ist eine Migration vom Beispielprojekt ASP.NET MVC zum ASP.NET Core-Projekt erforderlich:
clientseitige Inhalte (CSS, Schriftarten und Skripts)
Controller
views
Modelle
Bündelung
Filter
Melden Sie sich an/aus, Identity (Dies wird im nächsten Tutorial ausgeführt.)
Controller und Ansichten
Kopieren Sie jede der Methoden aus dem ASP.NET MVC
HomeController
in das neueHomeController
. In ASP.NET MVC ist ActionResultder Controlleraktionsmethode-Rückgabetyp der integrierten Vorlage; in ASP.NET Core MVC geben die Aktionsmethoden stattdessen zurückIActionResult
.ActionResult
IActionResult
implementiert, sodass der Rückgabetyp der Aktionsmethoden nicht geändert werden muss.Kopieren Sie die
About.cshtml
Dateien ,Contact.cshtml
- undIndex.cshtml
Razor -Ansichtsdateien aus dem ASP.NET MVC-Projekt in das ASP.NET Core-Projekt.
Testen der einzelnen Methoden
Die Layoutdatei und die Stile wurden noch nicht migriert, sodass die gerenderten Ansichten nur den Inhalt in den Ansichtsdateien enthalten. Die erstellten Layoutdateilinks für die About
Ansichten und Contact
sind noch nicht verfügbar.
- Rufen Sie die gerenderten Ansichten aus dem Browser in der ausgeführten ASP.NET Kern-App auf, indem Sie die aktuelle Portnummer durch die portnummer ersetzen, die im ASP.NET Kernprojekt verwendet wird. Beispiel:
https://localhost:44375/home/about
.
Beachten Sie das Fehlen von Formatierungs- und Menüelementen. Das Formatieren wird im nächsten Abschnitt behoben.
Statischer Inhalt
In ASP.NET MVC 5 und früher wurden statische Inhalte aus dem Stamm des Webprojekts gehostet und mit serverseitigen Dateien vermischt. In ASP.NET Core werden statische Inhalte im Verzeichnis wwwroot gehostet. Kopieren Sie den statischen Inhalt aus der ASP.NET MVC-App in das Verzeichnis wwwroot im ASP.NET Core-Projekt. In dieser Beispielkonvertierung:
- Kopieren Sie die Datei favicon.ico aus dem ASP.NET MVC-Projekt in das Verzeichnis wwwroot im ASP.NET Core-Projekt.
Das ASP.NET MVC-Projekt verwendet Bootstrap für die Formatierung und speichert die Bootstrap-Dateien in den Verzeichnissen Inhalt und Skripts . Die Vorlage, die das ASP.NET MVC-Projekt generiert hat, verweist in der Layoutdatei (Views/Shared/_Layout.cshtml
) auf Bootstrap. Die bootstrap.js
Dateien und bootstrap.css
können aus dem ASP.NET MVC-Projekt in das Verzeichnis wwwroot im neuen Projekt kopiert werden. Stattdessen wird in diesem Dokument im nächsten Abschnitt unterstützung für Bootstrap (und andere clientseitige Bibliotheken) mithilfe von CDNs hinzugefügt.
Migrieren der Layoutdatei
Kopieren Sie die
_ViewStart.cshtml
Datei aus dem Verzeichnis Views des ASP.NET MVC-Projekts in das Verzeichnis Views des ASP.NET Core Projekts. Die_ViewStart.cshtml
Datei wurde in ASP.NET Core MVC nicht geändert.Erstellen Sie ein Views/Shared-Verzeichnis .
Optional: Kopieren Sie
_ViewImports.cshtml
das Views-Verzeichnis des FullAspNetCore-MVC-Projekts in das Verzeichnis Views des ASP.NET Core Projekts. Entfernen Sie jede Namespacedeklaration in der_ViewImports.cshtml
Datei. Die_ViewImports.cshtml
Datei stellt Namespaces für alle Ansichtsdateien bereit und bringt Taghilfsprogramme ein. Taghilfsprogramme werden in der neuen Layoutdatei verwendet. Die_ViewImports.cshtml
Datei ist für ASP.NET Core neu.Kopieren Sie die
_Layout.cshtml
Datei aus dem Verzeichnis Views/Shared des ASP.NET MVC-Projekts in das Verzeichnis Views/Shared des ASP.NET Core Projekts.
Öffnen Sie _Layout.cshtml
die Datei, und nehmen Sie die folgenden Änderungen vor (der fertige Code wird unten gezeigt):
Ersetzen Sie durch
@Styles.Render("~/Content/css")
ein<link>
zu ladendebootstrap.css
Element (siehe unten).Entfernen Sie
@Scripts.Render("~/bundles/modernizr")
.Kommentieren Sie die
@Html.Partial("_LoginPartial")
Zeile aus (umschließen Sie die Zeile mit@*...*@
). Weitere Informationen finden Sie unter Migrieren der Authentifizierung und Identity zu ASP.NET CoreErsetzen Sie durch
@Scripts.Render("~/bundles/jquery")
ein<script>
-Element (siehe unten).Ersetzen Sie durch
@Scripts.Render("~/bundles/bootstrap")
ein<script>
-Element (siehe unten).
Das Ersatzmarkup für die Bootstrap-CSS-Aufnahme:
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
Das Ersatzmarkup für die JavaScript-Aufnahme jQuery und Bootstrap:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
Die aktualisierte _Layout.cshtml
Datei ist unten dargestellt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
Zeigen Sie die Website im Browser an. Es sollte jetzt ordnungsgemäß geladen werden, wobei die erwarteten Stile vorhanden sind.
- Optional: Versuchen Sie, die neue Layoutdatei zu verwenden. Kopieren Sie die Layoutdatei aus dem Projekt FullAspNetCore . Die neue Layoutdatei verwendet Taghilfsprogramme und enthält weitere Verbesserungen.
Konfigurieren der Bündelung und Minimierung
Informationen zum Konfigurieren der Bündelung und Minimierung finden Sie unter Bündelung und Minimierung.
Beheben von HTTP 500-Fehlern
Es gibt viele Probleme, die zu HTTP 500-Fehlermeldungen führen können, die keine Informationen zur Quelle des Problems enthalten. Wenn die Views/_ViewImports.cshtml
Datei beispielsweise einen Namespace enthält, der im Projekt nicht vorhanden ist, wird ein HTTP 500-Fehler generiert. Standardmäßig wird in ASP.NET Core-Apps die UseDeveloperExceptionPage
Erweiterung hinzugefügt IApplicationBuilder
und ausgeführt, wenn die Konfiguration Entwicklung ist. Sehen Sie sich ein Beispiel im folgenden Code an:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core konvertiert nicht behandelte Ausnahmen in HTTP 500-Fehlerantworten. Normalerweise werden in diesen Antworten keine Fehlerdetails enthalten, um die Offenlegung potenziell vertraulicher Informationen über den Server zu verhindern. Weitere Informationen finden Sie unter Entwickler-Ausnahmeseite.