Bagikan melalui


Cara Meningkatkan ASP.NET MVC 4 dan Proyek API Web ke ASP.NET MVC 5 dan Web API 2

oleh Rick Anderson

ASP.NET MVC 5 dan Web API 2 menghadirkan sejumlah fitur baru, termasuk perutean atribut, filter autentikasi, dan banyak lagi. Lihat https://www.asp.net/vnext untuk detail selengkapnya.

Panduan ini akan memandu Anda dengan langkah-langkah yang diperlukan untuk meningkatkan aplikasi Anda ke versi terbaru.

Catatan

Silakan lihat ASP.NET dan Alat Web untuk Catatan Rilis Visual Studio 2013 untuk informasi tentang melanggar perubahan dari MVC 4 dan Web API ke versi berikutnya.

Artikel ini ditulis oleh Youngjune Hong dan Rick Anderson ( @RickAndMSFT )

Langkah-langkah Peningkatan

  1. Cadangkan proyek Anda. Panduan ini akan mengharuskan Anda untuk membuat perubahan pada file proyek, konfigurasi paket, dan file web.config Anda.

  2. Untuk memutakhirkan dari Web API ke Web API 2, di global.asax, ubah:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    ke

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  3. Pastikan semua paket yang digunakan proyek Anda kompatibel dengan MVC 5 dan Web API 2. Tabel berikut menunjukkan paket terkait MVC 4 dan Web API daripada yang perlu diubah. Jika Anda memiliki paket yang bergantung pada salah satu paket yang tercantum di bawah ini, silakan hubungi penerbit untuk mendapatkan versi yang lebih baru yang kompatibel dengan MVC 5 dan Web API 2. Jika Anda memiliki kode sumber untuk paket tersebut, Anda harus mengkompilasi ulang dengan rakitan baru MVC 5 dan Web API 2.

    Id Paket Versi lama Versi baru
    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> Dihapus
    Microsoft.AspNet.WebPages.Administration <o:p></o:p> Dihapus
    Microsoft-Web-Helpers <o:p></o:p> Microsoft.AspNet.WebHelpers

    Catatan

    Microsoft-Web-Helpers telah diganti dengan Microsoft.AspNet.WebHelpers. Anda harus menghapus paket lama terlebih dahulu, lalu menginstal paket yang lebih baru.

    Tidak ada kompatibilitas versi silang di antara paket ASP.NET utama. Misalnya, MVC 5 hanya kompatibel dengan Razor 3, dan bukan Razor 2.

  4. Buka proyek Anda di Visual Studio.

  5. Hapus salah satu paket ASP.NET NuGet berikut yang diinstal. Anda akan menghapusnya menggunakan Package Manager Console (PMC). Untuk membuka PMC, pilih menu Alat lalu pilih Manajer Paket NuGet, lalu pilih Konsol Manajer Paket. Proyek Anda mungkin tidak menyertakan semua ini.

    1. Microsoft.AspNet.WebPages.Administration
      Paket ini biasanya ditambahkan saat meningkatkan dari MVC 3 ke MVC 4. Untuk menghapusnya, jalankan perintah berikut di PMC:
      Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Microsoft-Web-Helpers
      Paket ini telah diganti nama sebagai Microsoft.AspNet.WebHelpers. Untuk menghapusnya, jalankan perintah berikut di PMC:
      Uninstall-Package -Id Microsoft-Web-Helpers
    3. Microsoft.AspNet.Mvc.FixedDisplayMode
      Paket ini berisi pekerjaan untuk bug di MVC 4 yang telah diperbaiki di MVC 5. Untuk menghapusnya, jalankan perintah berikut di PMC:
      Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. Tingkatkan semua paket NuGet ASP.NET menggunakan PMC. Di PMC, jalankan perintah berikut:
    Update-Package
    Perintah Update-Package tanpa parameter apa pun akan memperbarui setiap paket. Anda dapat memperbarui paket satu per satu dengan menggunakan argumen ID. Untuk informasi selengkapnya tentang perintah pembaruan, jalankan get-help update-package .

Memperbarui File web.config Aplikasi

Pastikan untuk membuat perubahan ini dalam file web.config aplikasi, bukan file web.config di folder Tampilan .

Temukan bagian <runtime>/<assemblyBinding> , dan buat perubahan berikut:

  1. Dalam elemen dengan atribut nama "System.Web.Mvc", ubah nomor versi dari "4.0.0.0" menjadi "5.0.0.0". (Dua perubahan dalam elemen tersebut.)

  2. Dalam elemen dengan atribut nama "System.Web.Helpers" dan "System.Web.WebPages" ubah nomor versi dari "2.0.0.0" menjadi "3.0.0.0". Empat perubahan akan terjadi, dua di masing-masing elemen.

    <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. Temukan bagian <appSettings> dan perbarui halaman web:version dari 2.0.0.0 ke 3.0.0.0 seperti yang ditunjukkan di bawah ini:

    <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. Hapus tingkat kepercayaan apa pun selain Penuh. Contohnya:

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

Memperbarui file web.config di bawah folder Tampilan

Jika aplikasi Anda menggunakan area, Anda juga perlu memperbarui setiap file web.config di sub-folder Tampilan dari setiap folder Area.

  1. Perbarui semua elemen yang berisi "System.Web.Mvc" dari versi "4.0.0.0" ke versi "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. Perbarui semua elemen yang berisi "System.Web.WebPages.Razor" dari versi "2.0.0.0" ke versi"3.0.0.0". Jika bagian ini berisi "System.Web.WebPages", perbarui elemen-elemen tersebut dari versi "2.0.0.0" ke versi"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. Jika Anda menghapus Microsoft-Web-Helpers paket NuGet di langkah sebelumnya, instal Microsoft.AspNet.WebHelpers dengan perintah berikut di PMC:
    Install-Package -Id Microsoft.AspNet.WebHelpers

  4. Jika aplikasi Anda menggunakan metode User.IsInRole(), tambahkan yang berikut ini ke file Web.config .

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

Langkah Terakhir

Bangun dan uji aplikasi.

Hapus GUID jenis proyek MVC 4 dari file proyek.

  1. Di Penjelajah Solusi, klik kanan nama proyek lalu pilih Bongkar Proyek.
  2. Klik kanan proyek dan pilih Edit ProjectName.csproj.
  3. ProjectTypeGuids Temukan elemen lalu hapus GUID proyek MVC 4, {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
  4. Simpan dan tutup file proyek yang terbuka.
  5. Klik kanan proyek dan pilih Muat Ulang Proyek.