Sdílet prostřednictvím


Jak upgradovat aplikaci ASP.NET MVC 4 a projekt webového rozhraní API na ASP.NET MVC 5 a webové rozhraní API 2

Rick Anderson

ASP.NET MVC 5 a Webové rozhraní API 2 přináší řadu nových funkcí, včetně směrování atributů, filtrů ověřování a mnoha dalších. Další podrobnosti najdete https://www.asp.net/vnext v tématu .

Tento názorný postup vás provede kroky potřebnými k upgradu aplikace na nejnovější verzi.

Poznámka

Informace o zásadních změnách z MVC 4 a webového rozhraní API na další verzi najdete v ASP.NET and Web Tools Visual Studio 2013 poznámky k verzi.

Tento článek napsali Youngjune Hong a Rick Anderson ( @RickAndMSFT )

Postup upgradu

  1. Zálohujte projekt. Tento názorný postup bude vyžadovat, abyste udělali změny v souboru projektu, konfiguraci balíčku a web.config souborů.

  2. Pro upgrade z webového rozhraní API na webové rozhraní API 2 v souboru global.asax změňte:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    na

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  3. Ujistěte se, že všechny balíčky, které vaše projekty používají, jsou kompatibilní s MVC 5 a webovým rozhraním API 2. Následující tabulka ukazuje balíčky související s MVC 4 a webovým rozhraním API, které je potřeba změnit. Pokud máte balíček, který je závislý na některém z níže uvedených balíčků, požádejte vydavatele o novější verze, které jsou kompatibilní s MVC 5 a webovým rozhraním API 2. Pokud máte zdrojový kód pro tyto balíčky, měli byste je znovu zkompilovat pomocí nových sestavení MVC 5 a webového rozhraní API 2.

    ID balíčku Stará verze Nová verze
    Microsoft.AspNet.Razor 2.0.x.x 3.0.0
    Microsoft.AspNet.WebPages 2.0.x.x 3.0.0
    Microsoft.AspNet.WebPages.WebData 2.0.x.x 3.0.0
    Microsoft.AspNet.WebPages.OAuth 2.0.x.x 3.0.0
    Microsoft.AspNet.Mvc 4.0.x.x 5.0.0
    Microsoft.AspNet.Mvc.Facebook 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.Core 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.SelfHost 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.Client 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.OData 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.WebHost 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.Tracing 4.0.x.x 5.0.0
    Microsoft.AspNet.WebApi.HelpPage 4.0.x.x 5.0.0
    Microsoft.Net.Http 2.0.x. 2.2.x.
    Microsoft.Data.OData 5.2.x 5.6.x
    System.Spatial 5.2.x 5.6.x
    Microsoft.Data.Edm 5.2.x 5.6.x
    Microsoft.AspNet.Mvc.FixedDisplayModes <o:p></o:p> Odebráno
    Microsoft.AspNet.WebPages.Administration <o:p></o:p> Odebráno
    Microsoft-Web-Helpers <o:p></o:p> Microsoft.AspNet.WebHelpers

    Poznámka

    Microsoft-Web-Helpers byl nahrazen microsoft.AspNet.WebHelpers. Nejprve byste měli odebrat starý balíček a pak nainstalovat novější balíček.

    Mezi hlavními balíčky ASP.NET neexistuje žádná kompatibilita mezi verzemi. Například MVC 5 je kompatibilní pouze s Razor 3, a ne Razor 2.

  4. Otevřete svůj projekt v sadě Visual Studio.

  5. Odeberte kterýkoli z následujících ASP.NET nainstalovaných balíčků NuGet. Odeberete je pomocí konzoly Správce balíčků (PMC). PmC otevřete tak, že vyberete nabídku Nástroje , pak vyberete Správce balíčků NuGet a pak vyberete Konzola Správce balíčků. Projekt nemusí obsahovat všechny tyto možnosti.

    1. Microsoft.AspNet.WebPages.Administration
      Tento balíček se obvykle přidává při upgradu z MVC 3 na MVC 4. Pokud ho chcete odebrat, spusťte v PMC následující příkaz:
      Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Microsoft-Web-Helpers
      Tento balíček byl přejmenován na Microsoft.AspNet.WebHelpers. Pokud ho chcete odebrat, spusťte v PMC následující příkaz:
      Uninstall-Package -Id Microsoft-Web-Helpers
    3. Microsoft.AspNet.Mvc.FixedDisplayMode
      Tento balíček obsahuje řešení chyby v MVC 4, která byla opravena v MVC 5. Pokud ho chcete odebrat, spusťte v PMC následující příkaz:
      Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. Upgradujte všechny balíčky NuGet ASP.NET pomocí PMC. V PMC spusťte následující příkaz:
    Update-Package
    Příkaz Update-Package bez jakýchkoli parametrů aktualizuje každý balíček. Balíčky můžete aktualizovat jednotlivě pomocí argumentu ID. Další informace o příkazu update potřebujete spuštěním příkazu get-help update-package .

Aktualizace souboru web.config aplikace

Nezapomeňte provést tyto změny v souboru aplikaceweb.config , ne v souboruweb.config ve složce Zobrazení .

<runtime>/<assemblyBinding> Vyhledejte oddíl a proveďte následující změny:

  1. V elementech s atributem name "System.Web.Mvc" změňte číslo verze z "4.0.0.0" na "5.0.0.0". (Dvě změny v daném prvku.)

  2. V prvcích s atributem name "System.Web.Helpers" a "System.Web.WebPages" změňte číslo verze z "2.0.0.0" na "3.0.0.0". Dojde ke čtyřem změnám, dvě v každém prvku.

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <!--Two elements removed for Clarity -->
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <!--WebGrease element removed for Clarity -->
      </assemblyBinding
    
  3. <appSettings> Vyhledejte oddíl a aktualizujte webovou stránku:version z 2.0.0.0 na 3.0.0.0, jak je znázorněno níže:

    <appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="PreserveLoginUrl" value="true" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>
    
  4. Odeberte všechny jiné úrovně důvěryhodnosti než Úplné. Příklad:

    <securityPolicy>
       <!--<trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>-->
    </securityPolicy>
    

Aktualizace souborůweb.config ve složce Zobrazení

Pokud vaše aplikace používá oblasti, budete také muset aktualizovat každý souborweb.config v podsložce Zobrazení každé složky Oblast.

  1. Aktualizujte všechny prvky, které obsahují "System.Web.Mvc" z verze "4.0.0.0" na verzi "5.0.0.0".

    <system.web.webPages.razor>
      <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <!--Elements removed for Clarity.-->
        </namespaces>
      </pages>
    </system.web.webPages.razor>
    
    -->
      <pages
          validateRequest="false"
          pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
          pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
          userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <controls>
          <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
        </controls>
      </pages>
    </system.web>
    
  2. Aktualizujte všechny prvky, které obsahují "System.Web.WebPages.Razor" z verze "2.0.0.0" na verzi"3.0.0.0". Pokud tato část obsahuje "System.Web.WebPages", aktualizujte tyto prvky z verze "2.0.0.0" na verzi"3.0.0.0".

    <configuration>
      <configSections>
        <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
          <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
        </sectionGroup>
      </configSections>
    
  3. Pokud jste balíček NuGet odebrali Microsoft-Web-Helpers v předchozím kroku, nainstalujte Microsoft.AspNet.WebHelpers ho pomocí následujícího příkazu v PMC:
    Install-Package -Id Microsoft.AspNet.WebHelpers

  4. Pokud vaše aplikace používá metodu User.IsInRole(), přidejte do souboruWeb.config následující.

    <system.webServer>
        <modules>
          <remove name="RoleManager" />
        </modules>
      </system.webServer>
    

Poslední kroky

Sestavte a otestujte aplikaci.

Odeberte identifikátor GUID typu projektu MVC 4 ze souborů projektu.

  1. V Průzkumník řešení klikněte pravým tlačítkem na název projektu a pak vyberte Uvolnit projekt.
  2. Klikněte pravým tlačítkem na projekt a vyberte Upravit název_projektu.csproj.
  3. ProjectTypeGuids Vyhledejte element a pak odeberte GUID projektu MVC 4. {E3E379DF-F4C6-4180-9B81-6769533ABE47}
  4. Uložte a zavřete otevřený soubor projektu.
  5. Klikněte pravým tlačítkem na projekt a vyberte Znovu načíst projekt.