Sposób uaktualniania projektu wzorca ASP.NET MVC 4 i Web API do wersji ASP.NET MVC 5 i Web API 2

Autor: Rick Anderson

ASP.NET MVC 5 i Web API 2 udostępniają wiele nowych funkcji, w tym routing atrybutów, filtry uwierzytelniania i wiele innych. Aby uzyskać więcej informacji, zobacz https://www.asp.net/vnext .

Ten przewodnik przeprowadzi Cię przez kroki wymagane do uaktualnienia aplikacji do najnowszej wersji.

Uwaga

Aby uzyskać informacje o zmianach powodujących niezgodność z interfejsu MVC 4 i interfejsu API sieci Web, zobacz ASP.NET and Web Tools informacje o wersji Visual Studio 2013 wersji.

Ten artykuł został napisany przez Youngjune Hong i Rick Anderson ( @RickAndMSFT )

Kroki uaktualniania

  1. Utwórz kopię zapasową projektu. Ten przewodnik będzie wymagał wprowadzenia zmian w pliku projektu, konfiguracji pakietu i web.config plików.

  2. Aby przeprowadzić uaktualnienie z internetowego interfejsu API do internetowego interfejsu API 2, w pliku global.asax zmień:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    na wartość

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  3. Upewnij się, że wszystkie pakiety używane przez projekty są zgodne z interfejsem MVC 5 i internetowym interfejsem API 2. W poniższej tabeli przedstawiono pakiety powiązane z interfejsem API sieci Web i MVC 4, niż trzeba je zmienić. Jeśli masz pakiet zależny od jednego z pakietów wymienionych poniżej, skontaktuj się z wydawcami, aby uzyskać nowsze wersje zgodne z interfejsem MVC 5 i internetowym interfejsem API 2. Jeśli masz kod źródłowy dla tych pakietów, należy je ponownie skompilować przy użyciu nowych zestawów mvC 5 i internetowego interfejsu API 2.

    Identyfikator pakietu Stara wersja Nowa wersja
    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:p> Zostaną usunięte
    Microsoft.AspNet.WebPages.Administration <o:p></o:p:p> Zostaną usunięte
    Pomocnicy microsoft-web <o:p></o:p:p> Microsoft.AspNet.WebHelpers

    Uwaga

    Microsoft-Web-Helpers został zastąpiony przez microsoft.AspNet.WebHelpers. Najpierw należy usunąć stary pakiet, a następnie zainstalować nowszy pakiet.

    Nie ma zgodności między wersjami wśród głównych pakietów ASP.NET. Na przykład MVC 5 jest zgodny tylko z Razor 3, a nie Razor 2.

  4. Otwórz projekt w programie Visual Studio.

  5. Usuń dowolną z następujących ASP.NET zainstalowanych pakietów NuGet. Te elementy zostaną usunięte przy użyciu konsoli Menedżera pakietów (PMC). Aby otworzyć pmC, wybierz menu Narzędzia , a następnie wybierz pozycję Menedżer pakietów NuGet, a następnie wybierz pozycję Konsola menedżera pakietów. Projekt może nie zawierać wszystkich tych elementów.

    1. Microsoft.AspNet.WebPages.Administration
      Ten pakiet jest zwykle dodawany podczas uaktualniania z mvC 3 do MVC 4. Aby go usunąć, uruchom następujące polecenie w pmC:
      Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Microsoft-Web-Helpers
      Ten pakiet został ponownie nazwany jako Microsoft.AspNet.WebHelpers. Aby go usunąć, uruchom następujące polecenie w pmC:
      Uninstall-Package -Id Microsoft-Web-Helpers
    3. Microsoft.AspNet.Mvc.FixedDisplayMode
      Ten pakiet zawiera obejście dla usterki w MVC 4, która została naprawiona w MVC 5. Aby go usunąć, uruchom następujące polecenie w usłudze PMC:
      Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. Uaktualnij wszystkie pakiety NuGet ASP.NET przy użyciu kontrolera PMC. W usłudze PMC uruchom następujące polecenie:
    Update-Package
    Polecenie Update-Package bez żadnych parametrów zaktualizuje każdy pakiet. Pakiety można aktualizować indywidualnie przy użyciu argumentu ID. Aby uzyskać więcej informacji o poleceniu aktualizacji, uruchom polecenie get-help update-package .

Aktualizowanie pliku web.config aplikacji

Pamiętaj, aby wprowadzić te zmiany w pliku web.config aplikacji, a nie w pliku web.config w folderze Widoki .

Znajdź sekcję <runtime>/<assemblyBinding> i wprowadź następujące zmiany:

  1. W elementach o atrybucie name "System.Web.Mvc" zmień numer wersji z "4.0.0.0" na "5.0.0.0". (Dwie zmiany w tym elemecie).

  2. W elementach o nazwie atrybut "System.Web.Helpers" i "System.Web.WebPages" zmień numer wersji z "2.0.0.0" na "3.0.0.0". Zostaną wprowadzone cztery zmiany, dwa w każdym z elementów.

    <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. Znajdź sekcję <appSettings> i zaktualizuj strony internetowe:wersja z wersji 2.0.0.0 do 3.0.0.0, jak pokazano poniżej:

    <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. Usuń wszystkie poziomy zaufania inne niż Pełne. Na przykład:

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

Aktualizowanie plików web.config w folderze Views

Jeśli aplikacja używa obszarów, należy również zaktualizować każdy plik web.config w podfolderie Views każdego folderu Obszaru.

  1. Zaktualizuj wszystkie elementy zawierające ciąg "System.Web.Mvc" z wersji "4.0.0.0" do wersji "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. Zaktualizuj wszystkie elementy zawierające ciąg "System.Web.WebPages.Razor" z wersji "2.0.0.0" do wersji"3.0.0.0". Jeśli ta sekcja zawiera ciąg "System.Web.WebPages", zaktualizuj te elementy z wersji "2.0.0.0" do wersji"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. Jeśli pakiet NuGet został usunięty Microsoft-Web-Helpers w poprzednim kroku, zainstaluj go Microsoft.AspNet.WebHelpers za pomocą następującego polecenia w konsoli PMC:
    Install-Package -Id Microsoft.AspNet.WebHelpers

  4. Jeśli aplikacja używa metody User.IsInRole(), dodaj następujący kod do pliku Web.config .

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

Ostatnie kroki

Skompiluj i przetestuj aplikację.

Usuń identyfikator GUID typu projektu MVC 4 z plików projektu.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Zwolnij projekt.
  2. Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj projectName.csproj.
  3. Znajdź element , ProjectTypeGuids a następnie usuń identyfikator GUID projektu MVC 4, {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
  4. Zapisz i zamknij otwarty plik projektu.
  5. Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Załaduj ponownie projekt.