Megosztás a következőn keresztül:


Frissítés ASP.NET MVC-ről és webes API-ról ASP.NET Core MVC-re

Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC-be. A folyamat során az MVC ASP.NET kapcsolódó módosításait emeli ki.

A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:

  • Kezdeti beállítás.
  • Alapszintű vezérlők és nézetek.
  • Statikus tartalom.
  • Ügyféloldali függőségek.

A konfiguráció és a Identity kód áttelepítésével kapcsolatban lásd a Konfiguráció áttelepítése ASP.NET Core-ra és a Hitelesítés és Identity áttelepítése ASP.NET Core-ra című témaköröket.

Prerequisites

A kezdő ASP.NET MVC-projekt létrehozása

Hozzon létre egy példát ASP.NET MVC-projektre a Visual Studióban a migráláshoz:

  1. A Fájl menüben válassza a Új>Projektlehetőséget.
  2. Válassza ASP.NET webalkalmazás (.NET-keretrendszer), majd a Tovább gombot.
  3. Nevezze el a Projekt WebApp1 nevet, hogy a névtér egyezzen a következő lépésben létrehozott ASP.NET Core-projektel. Válassza a Create gombot.
  4. Válassza az MVC-t, majd a Létrehozás opciót.

A ASP.NET Core-projekt létrehozása

Hozzon létre egy új megoldást egy új ASP.NET Core-projekttel a migráláshoz:

  1. Indítsa el a Visual Studio második példányát.
  2. A Fájl menüben válassza a Új>Projektlehetőséget.
  3. Válassza ASP.NET Core webalkalmazást , majd válassza a Tovább gombot.
  4. Az új projekt konfigurálása párbeszédpanelen adja meg a Projekt WebApp1 nevet.
  5. Állítson be egy másik mappát az előző projekthez képest, hogy ugyanazt a projektnevet használhassa. Ha ugyanazt a névteret használja, könnyebben másolhat kódot a két projekt között. Válassza a Create gombot.
  6. A Új ASP.NET Core-webalkalmazás létrehozása párbeszédpanelen ellenőrizze, hogy .NET Core és ASP.NET Core 3.1 van-e kiválasztva. Válassza ki a webalkalmazás (model-View-Controller) projektsablont, és válassza a Létrehozás lehetőséget.

A ASP.NET Core-hely konfigurálása MVC használatára

Az ASP.NET Core 3.0-s vagy újabb verzióiban a .NET-keretrendszer már nem támogatott cél keretrendszer. A projektnek meg kell céloznia a .NET Core-t. A ASP.NET Core megosztott keretrendszere, amely az MVC-t is tartalmazza, a .NET Core futtatókörnyezet telepítésének része. A megosztott keretrendszerre a rendszer automatikusan hivatkozik, amikor az Microsoft.NET.Sdk.Web SDK-t használja a projektfájlban:

<Project Sdk="Microsoft.NET.Sdk.Web">

További információ: Keretrendszer-referencia.

A ASP.NET Core-ban az Startup osztály:

  • Lecseréli a elemet Global.asax.
  • Az összes alkalmazásindítási feladatot kezeli.

További információért lásd: Alkalmazás indítása ASP.NET Core.

A ASP.NET Core-projektben nyissa meg a Startup.cs fájlt:

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-alkalmazásoknak csatlakozniuk kell a köztes szoftver keretrendszerfunkcióihoz. Az előző sablon által létrehozott kód a következő szolgáltatásokat és köztes szoftvereket adja hozzá:

Ez a meglévő konfiguráció tartalmazza az MVC-projekt ASP.NET példa áttelepítéséhez szükséges elemet. Az ASP.NET Core köztes szoftver beállításairól további információt a ASP.NET Core alkalmazás indítása című témakörben talál.

Vezérlők és nézetek migrálása

Az ASP.NET Core projektben egy új üres vezérlő-osztály és nézet-osztály kerül hozzáadásra, ugyanazokat a neveket használva, mint a vezérlő- és nézetosztályok bármely ASP.NET MVC projektben, ahonnan migrál.

Az ASP.NET Core WebApp1 projekt már tartalmaz egy minimális példavezérlőt és nézetet ugyanazzal a névvel, mint az ASP.NET MVC-projektet. Ezek tehát az ASP.NET MVC-vezérlő és az ASP.NET MVC WebApp1 projektből migrálandó nézetek helyőrzőiként fognak szolgálni.

  1. Másolja a metódusokat az ASP.NET MVC-ből HomeController az új ASP.NET Core HomeController metódusok helyére. Nincs szükség a műveleti módszerek visszatérési típusának módosítására. Az ASP.NET MVC beépített sablonjának vezérlőműveleti metódusának visszatérési típusa ActionResult; az ASP.NET Core MVC esetében a műveleti metódusok IActionResult-t adnak vissza. ActionResult implementálja IActionResult.
  2. A ASP.NET Core-projektben kattintson a jobb gombbal a Nézetek/Homekönyvtár elemre, és válassza aMeglévő elem> lehetőséget.
  3. A Meglévő elem hozzáadása párbeszédpanelen lépjen az ASP.NET MVC WebApp1-projektNézetek/Home könyvtárába.
  4. Jelölje ki a About.cshtml, Contact.cshtmlés Index.cshtmlRazor tekintse meg a fájlokat, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlokat.

További információ: Kérelmek kezelése vezérlőkkel ASP.NET Core MVC-ben és nézetek a ASP.NET Core MVC-ben.

Az egyes metódusok tesztelése

Minden vezérlővégpont tesztelhető, azonban az elrendezés és a stílusok a dokumentum későbbi részében is szerepelnek.

  1. Futtassa a ASP.NET Core alkalmazást.
  2. Hívja meg a megjelenített nézeteket a böngészőből a futó ASP.NET Core-alkalmazásban, ha az aktuális portszámot a ASP.NET Core-projektben használt portszámra cseréli. Például: https://localhost:44375/home/about.

Statikus tartalom migrálása

A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webprojekt gyökérkönyvtárából lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus fájlok a projekt webes gyökérkönyvtárában vannak tárolva. Az alapértelmezett könyvtár {content root}/wwwroot, de módosítható. További információért lásd: Statikus fájlok az ASP.NET Core-ban.

Másolja a statikus tartalmat az ASP.NET MVC WebApp1 projektből a wwwroot ASP.NET Core WebApp1 projekt könyvtárába:

  1. A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a wwwrootMeglévő elem> lehetőséget.
  2. A Meglévő elem hozzáadása párbeszédpanelen lépjen az ASP.NET MVC WebApp1 projekthez.
  3. Jelölje ki a favicon.ico fájlt, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlt.

Az elrendezésfájlok migrálása

Másolja a ASP.NET MVC-projektelrendezési fájlokat a ASP.NET Core-projektbe:

  1. A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a ViewsMeglévő elem> lehetőséget.
  2. A Meglévő elem hozzáadása párbeszédpanelen keresse meg az ASP.NET MVC WebApp1 projekt könyvtárát Views .
  3. Jelölje ki a fájlt, majd válassza a _ViewStart.cshtmlHozzáadás lehetőséget.

Másolja a ASP.NET MVC-projekt megosztott elrendezési fájljait a ASP.NET Core-projektbe:

  1. A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a Views/SharedMeglévő elem> lehetőséget.
  2. A Meglévő elem hozzáadása párbeszédpanelen keresse meg az ASP.NET MVC WebApp1 projekt könyvtárát Views/Shared .
  3. Jelölje ki a _Layout.cshtml fájlt, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlt.

A ASP.NET Core-projektben nyissa meg a _Layout.cshtml fájlt. Végezze el a következő módosításokat az alább látható befejezett kódnak megfelelően:

Frissítse a Bootstrap CSS beillesztését, hogy megfeleljen az alábbi befejezett kódnak.

  1. Cserélje le @Styles.Render("~/Content/css") a <link> betöltendő bootstrap.css elemre (lásd alább).
  2. Távolítsa el @Scripts.Render("~/bundles/modernizr").

A Bootstrap CSS beépítésének kész helyettesítő jelölése.

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

Frissítse a jQuery és a Bootstrap JavaScript beillesztését, hogy megfeleljen az alábbi befejezett kódnak:

  1. Cserélje le a @Scripts.Render("~/bundles/jquery") elemet egy <script> elemre (lásd alább).
  2. Cserélje le a @Scripts.Render("~/bundles/bootstrap") elemet egy <script> elemre (lásd alább).

A jQuery és a Bootstrap JavaScript helyettesítő jelölésének befejezése:

<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>

A frissített _Layout.cshtml fájl alább látható:

<!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>&copy; @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>

A webhely megtekintése a böngészőben. A megjelenítésnek a várt stílusokkal kell történnie.

A kötegelés és a kicsinyítés beállítása

ASP.NET Core kompatibilis számos nyílt forráskódú csomagküldő és minification megoldással, például a WebOptimizerrel és más hasonló kódtárakkal. ASP.NET Core nem biztosít natív kötegelési és kicsinyítési megoldást. A csomagolás és a kicsinyítés konfigurálásáról további információk a Csomagolás és kicsinyítés oldalon találhatók.

HTTP 500-hibák megoldása

Számos probléma okozhat OLYAN HTTP 500-hibaüzenetet, amely nem tartalmaz információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a környezet fejlesztés. Ennek részletes leírása a következő kódban található:

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 HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.

Következő lépések

  • <identity.md>

További erőforrások

Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC 2.2-be. A folyamat során számos olyan dolgot emel ki, amelyek ASP.NET MVC-ről megváltoztak. A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:

  • Kezdeti beállítás
  • Alapszintű vezérlők és nézetek
  • Statikus tartalom
  • Ügyféloldali függőségek.

A konfiguráció és Identity a kód migrálásával kapcsolatban lásd: <configuration.md> és <identity.md>.

Note

Előfordulhat, hogy a minták verziószámai nem aktuálisak, ezért frissítse a projekteket ennek megfelelően.

A kezdő ASP.NET MVC-projekt létrehozása

A frissítés bemutatásához először egy ASP.NET MVC-alkalmazást hozunk létre. Hozza létre a WebApp1 névvel, hogy a névtér megegyezik a következő lépésben létrehozott ASP.NET Core-projekttel.

Visual Studio Új projekt párbeszédpanel

Új webalkalmazás párbeszédpanel: A ASP.NET sablonok paneljén kiválasztott MVC-projektsablon

Szabadon választható: Módosítsa a megoldás nevét WebApp1-rőlMvc5-re. A Visual Studio megjeleníti az új megoldásnevet (Mvc5), amely megkönnyíti ennek a projektnek a következő projekttől való megkülönböztetését.

A ASP.NET Core-projekt létrehozása

Hozzon létre egy új üres ASP.NET Core-webalkalmazást, amelynek neve megegyezik az előző projekt (WebApp1) nevével, így a két projekt névterei megegyeznek. Ugyanaz a névtér megkönnyíti a kód másolását a két projekt között. Hozza létre ezt a projektet egy másik könyvtárban, mint az előző projekt, hogy ugyanazt a nevet használja.

New Project (Új projekt) párbeszédpanel

Új ASP.NET webalkalmazás párbeszédpanel: Üres projektsablon a ASP.NET Alapvető sablonok panelen

  • Szabadon választható: Hozzon létre egy új ASP.NET Core-alkalmazást a webalkalmazás-projektsablon használatával. Nevezze el a projekt WebApp1-et, és válassza ki az egyéni felhasználói fiókok hitelesítési lehetőségét. Nevezze át ezt az alkalmazást FullAspNetCore névre. A projekt létrehozása időt takarít meg az átalakítás során. A végeredmény megtekinthető a sablon által létrehozott kódban, a kód átmásolható a konvertálási projektbe, vagy összehasonlítható a sablon által létrehozott projekttel.

A webhely konfigurálása az MVC használatára

  • A .NET Core célzása esetén a rendszer alapértelmezés szerint hivatkozik a Microsoft.AspNetCore.App metacsomagra . Ez a csomag az MVC-alkalmazások által gyakran használt csomagokat tartalmazza. Ha a .NET-keretrendszert célozza, a csomaghivatkozásokat egyenként kell felsorolni a projektfájlban.

Microsoft.AspNetCore.Mvc A ASP.NET Core MVC-keretrendszer. Microsoft.AspNetCore.StaticFiles a statikus fájlkezelő. ASP.NET Core-alkalmazások kifejezetten a köztes szoftvereket, például a statikus fájlok kiszolgálását választják. További információ: Statikus fájlok.

  • Nyissa meg a Startup.cs fájlt, és módosítsa a kódot az alábbiaknak megfelelően:
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?}");
        });
    }
}

A UseStaticFiles bővítménymetódus hozzáadja a statikus fájlkezelőt. További információ: Alkalmazás indítása és útválasztása.

Vezérlő és nézet hozzáadása

Ebben a szakaszban egy minimális vezérlő és nézet lesz hozzáadva, amely helyőrzőként szolgál a ASP.NET MVC-vezérlőhöz és a következő szakaszban migrált nézetekhez.

  • Adjon hozzá egy Controllers könyvtárat.

  • Adjon hozzá egy vezérlőosztályt HomeController.cs a Controllers címtárhoz.

Új elem hozzáadása párbeszédpanel, kijelölve az MVC vezérlőosztályt

  • Adjon hozzá egy Views könyvtárat.

  • Adjon hozzá egy Views/Home könyvtárat.

  • Adjon hozzá egy Razor névvel ellátott Index.cshtml nézetet a Views/Home könyvtárhoz.

Új elem hozzáadása ablak, amelyen az MVC nézet van kijelölve

A projektszerkezet az alábbiakban látható:

A WebApp1 fájljait és könyvtárait megjelenítő Megoldáskezelő

Cserélje le a Views/Home/Index.cshtml fájl tartalmát a következő jelölőnyelvre:

<h1>Hello world!</h1>

Nyisd meg az alkalmazást.

Webalkalmazás megnyitása a Microsoft Edge-ben

További információ: Vezérlők és nézetek.

Az alábbi funkciókhoz az MVC-projekt ASP.NET példaprojektből a ASP.NET Core-projektbe való migrálás szükséges:

  • ügyféloldali tartalom (CSS, betűtípusok és szkriptek)

  • controllers

  • views

  • models

  • bundling

  • filters

  • Bejelentkezés/kijelentkezés Identity (Ez a következő oktatóanyagban történik.)

Vezérlők és nézetek

  • Másolja az egyes metódusokat az ASP.NET MVC-ből HomeController az újba HomeController. A ASP.NET MVC-ben a beépített sablon vezérlőműveleti metódusának visszatérési típusa ActionResult; ASP.NET Core MVC esetében a műveleti metódusok adnak vissza IActionResult . ActionResult implementálja IActionResult, így nincs szükség a műveleti módszerek visszatérési típusának módosítására.

  • Másolja a About.cshtml, Contact.cshtml és Index.cshtmlRazor nézeti fájlokat az ASP.NET MVC-projektből az ASP.NET Core-projektbe.

Az egyes metódusok tesztelése

Az elrendezésfájl és a stílusok migrálása még nem történt meg, így a renderelt nézetek csak a nézetfájlok tartalmát tartalmazzák. Az elrendezésfájl által a About és Contact nézetekhez létrehozott hivatkozások még nem érhetők el.

Meghívja a böngésző renderelt nézeteit a futó ASP.NET alapalkalmazásban, és cserélje le az aktuális portszámot az ASP.NET core projektben használt portszámra. Például: https://localhost:44375/home/about.

Névjegylap

Figyelje meg a stílus és a menüelemek hiányát. A stílus a következő szakaszban lesz javítva.

Statikus tartalom

A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webes projekt gyökeréből lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus tartalom a wwwroot címtárban található. Másolja a statikus tartalmat az ASP.NET MVC alkalmazásból a wwwroot ASP.NET Core projekt könyvtárába. Ebben a mintakonvertálásban:

  • Másolja a fájlt a favicon.ico ASP.NET MVC-projektből a wwwroot ASP.NET Core projekt könyvtárába.

A ASP.NET MVC-projekt a Bootstrap stílusát használja, és a Bootstrap-fájlokat a Content könyvtárakban tárolja Scripts . A ASP.NET MVC-projektet létrehozó sablon a Bootstrapre hivatkozik az elrendezésfájlban (Views/Shared/_Layout.cshtml). A bootstrap.js és bootstrap.css fájlok az ASP.NET MVC-projektből átmásolhatók az új projekt wwwroot könyvtárába. Ez a dokumentum ehelyett a következő szakaszban a CDN-eket használó Bootstrap (és más ügyféloldali kódtárak) támogatását adja hozzá.

Az elrendezésfájl migrálása

  • Másolja a fájlt az _ViewStart.cshtml ASP.NET MVC-projekt könyvtárából Views a ASP.NET Core-projekt könyvtárába Views . A _ViewStart.cshtml fájl nem változott ASP.NET Core MVC-ben.

  • Hozzon létre egy könyvtárat Views/Shared .

  • Szabadon választható: Másolja _ViewImports.cshtml a FullAspNetCore MVC-projekt könyvtárából Views a ASP.NET Core-projekt könyvtárába Views . Távolítsa el a fájlban lévő névtér-deklarációt _ViewImports.cshtml . A _ViewImports.cshtml fájl névtereket biztosít az összes nézetfájlhoz, és bemutatja a címkesegítőket. A címkesegítők az új elrendezésfájlban használatosak. Az ASP.NET Core-hoz a _ViewImports.cshtml fájl új.

  • Másolja a fájlt az _Layout.cshtml ASP.NET MVC-projekt könyvtárából Views/Shared a ASP.NET Core-projekt könyvtárába Views/Shared .

Nyissa meg _Layout.cshtml a fájlt, és végezze el a következő módosításokat (a befejezett kód alább látható):

  • Cserélje le @Styles.Render("~/Content/css") a <link> betöltendő bootstrap.css elemre (lásd alább).

  • Távolítsa el @Scripts.Render("~/bundles/modernizr").

  • Fűzzön megjegyzést a @Html.Partial("_LoginPartial") vonalhoz (a sort körülölelje a következővel @*...*@: ). További információért lásd: Az autentikáció áttelepítése és Identity ASP.NET Core

  • Cserélje le a @Scripts.Render("~/bundles/jquery") elemet egy <script> elemre (lásd alább).

  • Cserélje le a @Scripts.Render("~/bundles/bootstrap") elemet egy <script> elemre (lásd alább).

A Bootstrap CSS-integráció cserejelölése:

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

A jQuery és a Bootstrap JavaScript beillesztésének helyettesítő jelölése:

<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>

A frissített _Layout.cshtml fájl alább látható:

<!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>&copy; @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>

A webhely megtekintése a böngészőben. Most már megfelelően kell betöltenie, a várt stílusokkal.

  • Szabadon választható: Próbálja meg használni az új elrendezésfájlt. Másolja ki az elrendezésfájlt a FullAspNetCore projektből. Az új elrendezésfájl címkesegítőket használ, és más fejlesztésekkel is rendelkezik.

A kötegelés és a kicsinyítés beállítása

A csomagkonfigurálás és a minification konfigurálásáról további információt a Bundling és a Minification című témakörben talál.

HTTP 500-hibák megoldása

Számos probléma okozhat OLYAN HTTP 500-hibaüzeneteket, amelyek nem tartalmaznak információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a konfiguráció fejlesztés. Lásd egy példát a következő kódban:

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 HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.

További erőforrások

Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC 2.1-re. A folyamat során számos olyan dolgot emel ki, amelyek ASP.NET MVC-ről megváltoztak. A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:

  • Kezdeti beállítás
  • Alapszintű vezérlők és nézetek
  • Statikus tartalom
  • Ügyféloldali függőségek.

A konfiguráció és a Identity kód áttelepítésével kapcsolatban lásd a Konfiguráció áttelepítése ASP.NET Core-ra és a Hitelesítés és Identity áttelepítése ASP.NET Core-ra című témaköröket.

Note

Előfordulhat, hogy a minták verziószámai nem aktuálisak, ezért frissítse a projekteket ennek megfelelően.

A kezdő ASP.NET MVC-projekt létrehozása

A frissítés bemutatásához először egy ASP.NET MVC-alkalmazást hozunk létre. Hozza létre a WebApp1 névvel, hogy a névtér megegyezik a következő lépésben létrehozott ASP.NET Core-projekttel.

Visual Studio Új projekt párbeszédpanel

Új webalkalmazás párbeszédpanel: A ASP.NET sablonok paneljén kiválasztott MVC-projektsablon

Szabadon választható: Módosítsa a megoldás nevét WebApp1-rőlMvc5-re. A Visual Studio megjeleníti az új megoldásnevet (Mvc5), amely megkönnyíti a megkülönböztetést a projektek között.

A ASP.NET Core-projekt létrehozása

Hozzon létre egy új üres ASP.NET Core-webalkalmazást, amelynek neve megegyezik az előző projekt (WebApp1) nevével, így a két projekt névterei megegyeznek. Ugyanaz a névtér megkönnyíti a kód másolását a két projekt között. Hozza létre ezt a projektet egy másik könyvtárban, mint az előző projekt, hogy ugyanazt a nevet használja.

New Project (Új projekt) párbeszédpanel

Új ASP.NET webalkalmazás párbeszédpanel: Üres projektsablon a ASP.NET Alapvető sablonok panelen

  • Szabadon választható: Hozzon létre egy új ASP.NET Core-alkalmazást a webalkalmazás-projektsablon használatával. Nevezze el a projekt WebApp1-et, és válassza ki az egyéni felhasználói fiókok hitelesítési lehetőségét. Nevezze át ezt az alkalmazást FullAspNetCore névre. A projekt létrehozása időt takarít meg az átalakítás során. A végeredmény megtekinthető a sablon által létrehozott kódban, a kód átmásolható a konvertálási projektbe, vagy összehasonlítható a sablon által létrehozott projekttel.

A webhely konfigurálása az MVC használatára

  • A .NET Core célzása esetén a rendszer alapértelmezés szerint hivatkozik a Microsoft.AspNetCore.App metacsomagra . Ez a csomag az MVC-alkalmazások által gyakran használt csomagokat tartalmazza. Ha a .NET-keretrendszert célozza, a csomaghivatkozásokat egyenként kell felsorolni a projektfájlban.

Microsoft.AspNetCore.Mvc A ASP.NET Core MVC-keretrendszer. Microsoft.AspNetCore.StaticFiles a statikus fájlkezelő. ASP.NET Core-alkalmazások kifejezetten a köztes szoftvereket, például a statikus fájlok kiszolgálását választják. További információ: Statikus fájlok.

  • Nyissa meg a Startup.cs fájlt, és módosítsa a kódot az alábbiaknak megfelelően:
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?}");
        });
    }
}

A UseStaticFiles bővítménymetódus hozzáadja a statikus fájlkezelőt. A UseMvc bővítménymetódus útválasztást ad hozzá. További információ: Alkalmazás indítása és útválasztása.

Vezérlő és nézet hozzáadása

Ebben a szakaszban egy minimális vezérlő és nézet lesz hozzáadva, amely helyőrzőként szolgál a ASP.NET MVC-vezérlőhöz és a következő szakaszban migrált nézetekhez.

  • Adjon hozzá egy Controllers könyvtárat.

  • Adjon hozzá egy vezérlőosztálytHomeController.cs a Controllers címtárhoz.

MVC vezérlőosztály kiválasztása az „Új elem hozzáadása” párbeszédpanelen (az ASP.NET Core 2.1 kiadása előtt)

  • Adjon hozzá egy Views könyvtárat.

  • Adjon hozzá egy Views/Home könyvtárat.

  • Adjon hozzá egy Razor névvel ellátott Index.cshtml nézetet a Views/Home könyvtárhoz.

Új elem hozzáadása párbeszédpanel az MVC nézetlap kiválasztásával (a ASP.NET Core 2.1 kiadása előtt)

A projektszerkezet az alábbiakban látható:

A WebApp1 fájljait és könyvtárait megjelenítő Megoldáskezelő

Cserélje le a Views/Home/Index.cshtml fájl tartalmát a következő jelölőnyelvre:

<h1>Hello world!</h1>

Nyisd meg az alkalmazást.

Webalkalmazás megnyitása a Microsoft Edge-ben

További információ: Vezérlők és nézetek.

Az alábbi funkciókhoz az MVC-projekt ASP.NET példaprojektből a ASP.NET Core-projektbe való migrálás szükséges:

  • ügyféloldali tartalom (CSS, betűtípusok és szkriptek)

  • controllers

  • views

  • models

  • bundling

  • filters

  • Bejelentkezés/kijelentkezés Identity (Ez a következő oktatóanyagban történik.)

Vezérlők és nézetek

  • Másolja az egyes metódusokat az ASP.NET MVC-ből HomeController az újba HomeController. A ASP.NET MVC-ben a beépített sablon vezérlőműveleti metódusának visszatérési típusa ActionResult; ASP.NET Core MVC esetében a műveleti metódusok adnak vissza IActionResult . ActionResult implementálja IActionResult, így nincs szükség a műveleti módszerek visszatérési típusának módosítására.

  • Másolja a About.cshtml, Contact.cshtml és Index.cshtmlRazor nézeti fájlokat az ASP.NET MVC-projektből az ASP.NET Core-projektbe.

Az egyes metódusok tesztelése

Az elrendezésfájl és a stílusok migrálása még nem történt meg, így a renderelt nézetek csak a nézetfájlok tartalmát tartalmazzák. Az elrendezésfájl által a About és Contact nézetekhez létrehozott hivatkozások még nem érhetők el.

  • Meghívja a böngésző renderelt nézeteit a futó ASP.NET alapalkalmazásban, és cserélje le az aktuális portszámot az ASP.NET core projektben használt portszámra. Például: https://localhost:44375/home/about.

Névjegylap

Figyelje meg a stílus és a menüelemek hiányát. A stílus a következő szakaszban lesz javítva.

Statikus tartalom

A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webes projekt gyökeréből lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus tartalom a wwwroot címtárban található. Másolja a statikus tartalmat az ASP.NET MVC alkalmazásból a wwwroot ASP.NET Core projekt könyvtárába. Ebben a mintakonvertálásban:

  • Másolja a fájlt a favicon.ico ASP.NET MVC-projektből a wwwroot ASP.NET Core projekt könyvtárába.

A ASP.NET MVC-projekt a Bootstrap stílusát használja, és a Bootstrap-fájlokat a Content könyvtárakban tárolja Scripts . A ASP.NET MVC-projektet létrehozó sablon a Bootstrapre hivatkozik az elrendezésfájlban (Views/Shared/_Layout.cshtml). A bootstrap.js és bootstrap.css fájlok az ASP.NET MVC-projektből átmásolhatók az új projekt wwwroot könyvtárába. Ez a dokumentum ehelyett a következő szakaszban a CDN-eket használó Bootstrap (és más ügyféloldali kódtárak) támogatását adja hozzá.

Az elrendezésfájl migrálása

  • Másolja a fájlt az _ViewStart.cshtml ASP.NET MVC-projekt könyvtárából Views a ASP.NET Core-projekt könyvtárába Views . A _ViewStart.cshtml fájl nem változott ASP.NET Core MVC-ben.

  • Hozzon létre egy könyvtárat Views/Shared .

  • Szabadon választható: Másolja _ViewImports.cshtml a FullAspNetCore MVC-projekt könyvtárából Views a ASP.NET Core-projekt könyvtárába Views . Távolítsa el a fájlban lévő névtér-deklarációt _ViewImports.cshtml . A _ViewImports.cshtml fájl névtereket biztosít az összes nézetfájlhoz, és bemutatja a címkesegítőket. A címkesegítők az új elrendezésfájlban használatosak. Az ASP.NET Core-hoz a _ViewImports.cshtml fájl új.

  • Másolja a fájlt az _Layout.cshtml ASP.NET MVC-projekt könyvtárából Views/Shared a ASP.NET Core-projekt könyvtárába Views/Shared .

Nyissa meg _Layout.cshtml a fájlt, és végezze el a következő módosításokat (a befejezett kód alább látható):

  • Cserélje le @Styles.Render("~/Content/css") a <link> betöltendő bootstrap.css elemre (lásd alább).

  • Távolítsa el @Scripts.Render("~/bundles/modernizr").

  • Fűzzön megjegyzést a @Html.Partial("_LoginPartial") vonalhoz (a sort körülölelje a következővel @*...*@: ). További információért lásd: Az autentikáció áttelepítése és Identity ASP.NET Core

  • Cserélje le a @Scripts.Render("~/bundles/jquery") elemet egy <script> elemre (lásd alább).

  • Cserélje le a @Scripts.Render("~/bundles/bootstrap") elemet egy <script> elemre (lásd alább).

A Bootstrap CSS-integráció cserejelölése:

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

A jQuery és a Bootstrap JavaScript beillesztésének helyettesítő jelölése:

<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>

A frissített _Layout.cshtml fájl alább látható:

<!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>&copy; @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>

A webhely megtekintése a böngészőben. Most már megfelelően kell betöltenie, a várt stílusokkal.

  • Szabadon választható: Próbálja meg használni az új elrendezésfájlt. Másolja ki az elrendezésfájlt a FullAspNetCore projektből. Az új elrendezésfájl címkesegítőket használ, és más fejlesztésekkel is rendelkezik.

A kötegelés és a kicsinyítés beállítása

A csomagkonfigurálás és a minification konfigurálásáról további információt a Bundling és a Minification című témakörben talál.

HTTP 500-hibák megoldása

Számos probléma okozhat OLYAN HTTP 500-hibaüzeneteket, amelyek nem tartalmaznak információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a konfiguráció fejlesztés. Lásd egy példát a következő kódban:

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 HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.

További erőforrások