Share via


Come aggiornare un progetto ASP.NET MVC 4 e API Web ad ASP.NET MVC 5 e API Web 2

di Rick Anderson

ASP.NET MVC 5 e API Web 2 portano una serie di nuove funzionalità, tra cui il routing degli attributi, i filtri di autenticazione e molto altro ancora. Per informazioni dettagliate, vedere https://www.asp.net/vnext.

Questa procedura dettagliata illustra i passaggi necessari per aggiornare l'applicazione alla versione più recente.

Nota

Per informazioni sulle modifiche di rilievo da MVC 4 e API Web alla versione successiva, vedere ASP.NET and Web Tools note sulla versione Visual Studio 2013.

Questo articolo è stato scritto da Youngjune Hong e Rick Anderson ( @RickAndMSFT )

Passaggi dell'aggiornamento

  1. Eseguire il backup del progetto. Questa procedura dettagliata richiederà di apportare modifiche al file di progetto, alla configurazione del pacchetto e ai file web.config.

  2. Per l'aggiornamento dall'API Web all'API Web 2, in global.asax, modificare:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    in

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  3. Assicurarsi che tutti i pacchetti usati dai progetti siano compatibili con MVC 5 e l'API Web 2. La tabella seguente mostra i pacchetti correlati all'API Web e MVC 4 che devono essere modificati. Se si dispone di un pacchetto dipendente da uno dei pacchetti elencati di seguito, contattare gli editori per ottenere le versioni più recenti compatibili con MVC 5 e API Web 2. Se si dispone del codice sorgente per tali pacchetti, è necessario ricompilarli con i nuovi assembly di MVC 5 e API Web 2.

    ID pacchetto Versione precedente Nuova versione
    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> Rimosso
    Microsoft.AspNet.WebPages.Administration <o:p></o:p> Rimosso
    Microsoft-Web-Helpers <o:p></o:p> Microsoft.AspNet.WebHelpers

    Nota

    Microsoft-Web-Helpers è stato sostituito con Microsoft.AspNet.WebHelpers. È necessario rimuovere prima il pacchetto precedente e quindi installare il pacchetto più recente.

    Non esiste alcuna compatibilità tra versioni tra i principali pacchetti ASP.NET. Ad esempio, MVC 5 è compatibile solo con Razor 3 e non Razor 2.

  4. Aprire il progetto in Visual Studio.

  5. Rimuovere uno dei seguenti pacchetti NuGet ASP.NET installati. Verranno rimossi usando la console di Gestione pacchetti (PMC). Per aprire PMC, selezionare il menu Strumenti e quindi Selezionare Gestione pacchetti NuGet, quindi selezionare Console di Gestione pacchetti. Il progetto potrebbe non includere tutti questi elementi.

    1. Microsoft.AspNet.WebPages.Administration
      Questo pacchetto viene in genere aggiunto durante l'aggiornamento da MVC 3 a MVC 4. Per rimuoverlo, eseguire il comando seguente nel PMC:
      Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Microsoft-Web-Helpers
      Questo pacchetto è stato rinominato come Microsoft.AspNet.WebHelpers. Per rimuoverlo, eseguire il comando seguente nel PMC:
      Uninstall-Package -Id Microsoft-Web-Helpers
    3. Microsoft.AspNet.Mvc.FixedDisplayMode
      Questo pacchetto contiene una soluzione alternativa per un bug in MVC 4 che è stato risolto in MVC 5. Per rimuoverlo, eseguire il comando seguente nel PMC:
      Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. Aggiornare tutti i pacchetti NuGet ASP.NET usando pmc. Nella console di Gestione pacchetti eseguire il comando seguente:
    Update-Package
    Il Update-Package comando senza parametri aggiornerà ogni pacchetto. È possibile aggiornare i pacchetti singolarmente usando l'argomento ID. Per altre informazioni sul comando update, eseguire get-help update-package .

Aggiornare il file diweb.config dell'applicazione

Assicurarsi di apportare queste modifiche nel file diweb.config dell'app, non nel file web.config nella cartella Views .

Individuare la <runtime>/<assemblyBinding> sezione e apportare le modifiche seguenti:

  1. Negli elementi con l'attributo name "System.Web.Mvc", modificare il numero di versione da "4.0.0.0" a "5.0.0.0". (Due modifiche apportate a tale elemento).

  2. Negli elementi con l'attributo name "System.Web.Helpers" e "System.Web.WebPages" modificare il numero di versione da "2.0.0.0" a "3.0.0.0". Si verificheranno quattro modifiche, due in ognuno degli elementi.

    <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. Individuare la <appSettings> sezione e aggiornare le pagine Web:version da 2.0.0.0 a 3.0.0.0, come illustrato di seguito:

    <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. Rimuovere tutti i livelli di attendibilità diversi da Full. Ad esempio:

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

Aggiornare i file web.config nella cartella Views

Se l'applicazione usa aree, sarà anche necessario aggiornare ogni fileweb.config nella sottocartella Views di ogni cartella Area.

  1. Aggiornare tutti gli elementi che contengono "System.Web.Mvc" dalla versione "4.0.0.0" alla versione "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. Aggiornare tutti gli elementi che contengono "System.Web.WebPages.Razor" dalla versione "2.0.0.0" alla versione"3.0.0.0". Se questa sezione contiene "System.Web.WebPages", aggiornare tali elementi dalla versione "2.0.0.0" alla versione"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. Se il Microsoft-Web-Helpers pacchetto NuGet è stato rimosso in un passaggio precedente, installare Microsoft.AspNet.WebHelpers con il comando seguente in PMC:
    Install-Package -Id Microsoft.AspNet.WebHelpers

  4. Se l'app usa il metodo User.IsInRole(), aggiungere quanto segue al file Web.config .

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

Passaggi finali

Compilare e testare l'applicazione.

Rimuovere il GUID del tipo di progetto MVC 4 dai file di progetto.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e quindi scegliere Scarica progetto.
  2. Fare clic con il pulsante destro del mouse sul progetto e scegliere Modifica NomeProgetto.csproj.
  3. Individuare l'elemento ProjectTypeGuids e quindi rimuovere il GUID del progetto MVC 4, {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
  4. Salvare e chiudere il file di progetto aperto.
  5. Fare clic con il pulsante destro del mouse sul progetto e scegliere Ricarica progetto.