Catatan Rilis ASP.NET MVC 4

Dokumen ini menjelaskan rilis ASP.NET MVC 4 .

Catatan Penginstalan

ASP.NET MVC 4 untuk Visual Studio 2010 dapat diinstal dari halaman beranda ASP.NET MVC 4 menggunakan Alat Penginstal Platform Web.

Sebaiknya hapus instalan pratinjau ASP.NET MVC 4 yang diinstal sebelumnya sebelum menginstal ASP.NET MVC 4. Anda dapat meningkatkan ASP.NET MVC 4 Beta dan Release Candidate ke ASP.NET MVC 4 tanpa menghapus instalasi.

Rilis ini tidak kompatibel dengan rilis pratinjau .NET Framework 4.5. Anda harus secara terpisah meningkatkan rilis pratinjau .NET Framework 4.5 yang diinstal ke versi akhir sebelum menginstal ASP.NET MVC 4.

ASP.NET MVC 4 dapat diinstal dan dijalankan berdampingan dengan ASP.NET MVC 3.

Dokumentasi

Dokumentasi untuk ASP.NET MVC tersedia di situs web MSDN di URL berikut:

https://go.microsoft.com/fwlink/?LinkID=243043

Tutorial dan informasi lain tentang ASP.NET MVC tersedia di halaman MVC 4 dari situs web ASP.NET (https://www.asp.net/mvc/mvc4).

Dukungan

ASP.NET MVC 4 didukung penuh. Jika Anda memiliki pertanyaan tentang bekerja dengan rilis ini, Anda juga dapat mempostingnya ke forum MVC ASP.NET (https://forums.asp.net/1146.aspx), di mana anggota komunitas ASP.NET sering dapat memberikan dukungan informal.

Persyaratan Perangkat Lunak

Komponen MVC 4 ASP.NET untuk Visual Studio memerlukan PowerShell 2.0 dan Visual Studio 2010 dengan Paket Layanan 1 atau Visual Web Developer Express 2010 dengan Paket Layanan 1.

Fitur Baru di ASP.NET MVC 4

Bagian ini menjelaskan fitur yang telah diperkenalkan dalam rilis MVC 4 ASP.NET.

API Web ASP.NET

ASP.NET MVC 4 mencakup ASP.NET Web API, kerangka kerja baru untuk membuat layanan HTTP yang dapat menjangkau berbagai klien termasuk browser dan perangkat seluler. ASP.NET Web API juga merupakan platform yang ideal untuk membangun layanan RESTful.

ASP.NET Web API menyertakan dukungan untuk fitur-fitur berikut:

  • Model pemrograman HTTP modern: Akses dan manipulasi permintaan dan respons HTTP secara langsung di API Web Anda menggunakan model objek HTTP baru yang sangat ditik. Model pemrograman dan alur HTTP yang sama tersedia secara simetris pada klien melalui jenis HttpClient baru.
  • Dukungan penuh untuk rute: ASP.NET Web API mendukung serangkaian kemampuan rute lengkap perutean ASP.NET, termasuk parameter rute dan batasan. Selain itu, gunakan konvensi sederhana untuk memetakan tindakan ke metode HTTP.
  • Negosiasi konten: Klien dan server dapat bekerja sama untuk menentukan format yang tepat untuk data yang dikembalikan dari API web. ASP.NET Web API menyediakan dukungan default untuk format yang dikodekan XML, JSON, dan URL Formulir dan Anda dapat memperluas dukungan ini dengan menambahkan pemformat Anda sendiri, atau bahkan mengganti strategi negosiasi konten default.
  • Pengikatan dan validasi model: Pengikat model menyediakan cara mudah untuk mengekstrak data dari berbagai bagian permintaan HTTP dan mengonversi bagian pesan tersebut menjadi objek .NET yang dapat digunakan oleh tindakan API Web. Validasi juga dilakukan pada parameter tindakan berdasarkan anotasi data.
  • Filter: ASP.NET Web API mendukung filter termasuk filter terkenal seperti atribut [Otorisasi ]. Anda dapat menulis dan menyambungkan filter Anda sendiri untuk tindakan, otorisasi, dan penanganan pengecualian.
  • Komposisi kueri: Gunakan atribut filter [Queryable] pada tindakan yang mengembalikan IQueryable untuk mengaktifkan dukungan untuk mengkueri API web Anda melalui konvensi kueri OData.
  • Kemampuan pengujian yang ditingkatkan: Daripada mengatur detail HTTP dalam objek konteks statis, tindakan API web berfungsi dengan instans HttpRequestMessage dan HttpResponseMessage. Buat proyek pengujian unit bersama dengan proyek Api Web Anda untuk mulai menulis pengujian unit dengan cepat untuk fungsionalitas Api Web Anda.
  • Konfigurasi berbasis kode: konfigurasi ASP.NET Web API dicapai hanya melalui kode, sehingga file konfigurasi Anda bersih. Gunakan pola pencari layanan yang disediakan untuk mengonfigurasi titik ekstensibilitas.
  • Peningkatan dukungan untuk kontainer Inversion of Control (IoC): ASP.NET Web API memberikan dukungan besar untuk kontainer IoC melalui abstraksi penyelesai dependensi yang ditingkatkan
  • Host mandiri: API Web dapat dihosting dalam proses Anda sendiri selain IIS sambil tetap menggunakan kekuatan penuh rute dan fitur Web API lainnya.
  • Buat halaman bantuan dan pengujian kustom: Anda sekarang dapat dengan mudah membuat halaman bantuan dan pengujian kustom untuk API web Anda dengan menggunakan layanan IApiExplorer baru untuk mendapatkan deskripsi runtime lengkap API web Anda.
  • Pemantauan dan diagnostik: ASP.NET Web API sekarang menyediakan infrastruktur pelacakan ringan yang memudahkan integrasi dengan solusi pengelogan yang ada seperti System.Diagnostics, ETW, dan kerangka kerja pengelogan pihak ketiga. Anda dapat mengaktifkan pelacakan dengan menyediakan implementasi ITraceWriter dan menambahkannya ke konfigurasi API web Anda.
  • Pembuatan tautan: Gunakan Url API Web ASP.NET Helper untuk menghasilkan tautan ke sumber daya terkait dalam aplikasi yang sama.
  • Templat proyek API Web: Pilih proyek Web API baru dari wizard Proyek MVC 4 Baru untuk memulai dan menjalankan ASP.NET Web API dengan cepat.
  • Perancah: Gunakan dialog Tambahkan Pengontrol untuk merancang pengontrol API web dengan cepat berdasarkan jenis model berbasis Kerangka Kerja Entitas.

Untuk detail selengkapnya tentang ASP.NET Web API, silakan kunjungi https://www.asp.net/web-api.

Penyempurnaan Templat Proyek Default

Templat yang digunakan untuk membuat proyek ASP.NET MVC 4 baru telah diperbarui untuk membuat situs web yang lebih modern:

Cuplikan layar tampilan browser halaman templat proyek baru.

Selain peningkatan kosmetik, ada fungsionalitas yang ditingkatkan dalam templat baru. Templat ini menggunakan teknik yang disebut penyajian adaptif agar terlihat bagus di browser desktop dan browser seluler tanpa penyesuaian apa pun.

Cuplikan layar tampilan browser seluler dari versi desktop halaman templat proyek baru.

Untuk melihat penyajian adaptif beraksi, Anda dapat menggunakan emulator seluler atau hanya mencoba mengubah ukuran jendela browser desktop agar lebih kecil. Ketika jendela browser menjadi cukup kecil, tata letak halaman akan berubah.

Templat Proyek Seluler

Jika Anda memulai proyek baru dan ingin membuat situs khusus untuk browser seluler dan tablet, Anda dapat menggunakan templat proyek Aplikasi Seluler baru. Ini didasarkan pada jQuery Mobile, pustaka sumber terbuka untuk membangun UI yang dioptimalkan sentuhan:

Cuplikan layar tampilan browser seluler templat proyek aplikasi seluler.

Templat ini berisi struktur aplikasi yang sama dengan templat Aplikasi Internet (dan kode pengontrol hampir identik), tetapi ditata menggunakan jQuery Mobile agar terlihat bagus dan berkinerja baik pada perangkat seluler berbasis sentuhan. Untuk mempelajari selengkapnya tentang cara menyusun dan menata antarmuka pengguna seluler, lihat situs web proyek jQuery Mobile.

Jika Anda sudah memiliki situs berorientasi desktop yang ingin Anda tambahkan tampilan yang dioptimalkan untuk seluler, atau jika Anda ingin membuat satu situs yang menyajikan tampilan bergaya berbeda ke browser desktop dan seluler, Anda dapat menggunakan fitur Mode Tampilan baru. (Lihat bagian berikutnya.)

Mode Tampilan

Fitur Mode Tampilan baru memungkinkan aplikasi memilih tampilan tergantung pada browser yang membuat permintaan. Misalnya, jika browser desktop meminta halaman Beranda, aplikasi mungkin menggunakan templat Views\Home\Index.cshtml. Jika browser seluler meminta halaman Beranda, aplikasi mungkin mengembalikan templat Views\Home\Index.mobile.cshtml.

Tata letak dan parsial juga dapat diganti untuk jenis browser tertentu. Contohnya:

  • Jika folder Views\Shared Anda berisi templat _Layout.cshtml dan _Layout.mobile.cshtml, secara default aplikasi akan menggunakan _Layout.mobile.cshtml selama permintaan dari browser seluler dan _Layout.cshtml selama permintaan lain.
  • Jika folder berisi _MyPartial.cshtml dan _MyPartial.mobile.cshtml, instruksi @Html.Partial("_MyPartial") akan merender _MyPartial.mobile.cshtml selama permintaan dari browser seluler, dan _MyPartial.cshtml selama permintaan lain.

Jika Anda ingin membuat tampilan, tata letak, atau tampilan parsial yang lebih spesifik untuk perangkat lain, Anda dapat mendaftarkan instans DefaultDisplayMode baru untuk menentukan nama mana yang akan dicari saat permintaan memenuhi kondisi tertentu. Misalnya, Anda dapat menambahkan kode berikut ke metode Application_Start dalam file Global.asax untuk mendaftarkan string "iPhone" sebagai mode tampilan yang berlaku saat browser Apple iPhone membuat permintaan:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

Setelah kode ini berjalan, saat browser Apple iPhone membuat permintaan, aplikasi Anda akan menggunakan tata letak Views\Shared\_Layout.iPhone.cshtml (jika ada). Untuk informasi selengkapnya tentang Mode Tampilan, lihat ASP.NET Fitur Seluler MVC 4. Aplikasi yang menggunakan DisplayModeProvider harus menginstal paket DisplayModes NuGet Tetap. Pembaruan ASP.NET Musim Gugur 2012 menyertakan paket DisplayModes NuGet Tetap dalam templat proyek baru. Lihat ASP.NET MVC 4 Mobile Caching Bug Diperbaiki untuk detail tentang perbaikan.

Fitur Seluler dan Seluler jQuery

Untuk informasi tentang membangun aplikasi Seluler dengan ASP.NET MVC 4 menggunakan jQuery Mobile, lihat tutorial ASP.NET MVC 4 Mobile Features.

Dukungan Tugas untuk Pengontrol Asinkron

Anda sekarang dapat menulis metode tindakan asinkron sebagai metode tunggal yang mengembalikan objek jenis Task atau Task<ActionResult>.

Untuk informasi selengkapnya lihat Menggunakan Metode Asinkron di ASP.NET MVC 4.

Azure SDK

ASP.NET MVC 4 mendukung rilis Windows Azure SDK 1.6 dan yang lebih baru.

Migrasi Database

ASP.NET proyek MVC 4 sekarang menyertakan Entity Framework 5. Salah satu fitur hebat dalam Entity Framework 5 adalah dukungan untuk migrasi database. Fitur ini memungkinkan Anda untuk dengan mudah mengembangkan skema database Anda menggunakan migrasi yang berfokus pada kode sambil mempertahankan data dalam database. Untuk informasi selengkapnya tentang migrasi database, lihat Menambahkan Bidang Baru ke Model dan Tabel Film dalam tutorial Pengenalan ASP.NET MVC 4.

Templat Proyek Kosong

Templat proyek MVC Empty sekarang benar-benar kosong sehingga Anda dapat memulai dari slate yang benar-benar bersih. Versi templat Proyek kosong yang lebih lama telah diganti namanya menjadi Dasar.

Menambahkan Pengontrol ke folder proyek apa pun

Anda sekarang dapat mengklik kanan dan memilih Tambahkan Pengontrol dari folder apa pun di proyek MVC Anda. Ini memberi Anda lebih banyak fleksibilitas untuk mengatur pengontrol sesuai keinginan Anda, termasuk menjaga pengontrol MVC dan Web API Anda di folder terpisah.

Bundling dan Minifikasi

Kerangka kerja bundling dan minifikasi memungkinkan Anda mengurangi jumlah permintaan HTTP yang perlu dibuat halaman Web dengan menggabungkan file individual ke dalam satu file yang dibundel untuk skrip dan CSS. Kemudian dapat mengurangi ukuran keseluruhan permintaan tersebut dengan menambang konten bundel. Penambangan dapat mencakup aktivitas seperti menghilangkan spasi kosong hingga memperpendek nama variabel untuk bahkan menciutkan pemilih CSS berdasarkan semantiknya. Bundel dideklarasikan dan dikonfigurasi dalam kode dan mudah direferensikan dalam tampilan melalui metode pembantu yang dapat menghasilkan satu tautan ke bundel atau, saat penelusuran kesalahan, beberapa tautan ke konten individual bundel. Untuk informasi selengkapnya lihat Bundling dan Minification.

Mengaktifkan Login dari Facebook dan Situs Lain Menggunakan OAuth dan OpenID

Templat default dalam templat ASP.NET MVC 4 Internet Project sekarang menyertakan dukungan untuk masuk OAuth dan OpenID menggunakan pustaka DotNetOpenAuth. Untuk informasi tentang mengonfigurasi penyedia OAuth atau OpenID, lihat Dukungan OAuth/OpenID untuk WebForms, MVC dan WebPages serta dokumentasi fitur OAuth dan OpenID di halaman web ASP.NET.

Meningkatkan Proyek MVC 3 ASP.NET ke ASP.NET MVC 4

ASP.NET MVC 4 dapat diinstal berdampingan dengan ASP.NET MVC 3 pada komputer yang sama, yang memberi Anda fleksibilitas dalam memilih kapan harus meningkatkan aplikasi MVC 3 ASP.NET ke ASP.NET MVC 4.

Cara paling sederhana untuk meningkatkan adalah dengan membuat proyek MVC 4 ASP.NET baru dan menyalin semua file tampilan, pengontrol, kode, dan konten dari proyek MVC 3 yang ada ke proyek baru lalu memperbarui referensi perakitan dalam proyek baru agar sesuai dengan templat non-MVC yang disertakan dengan asimibilitas yang Anda gunakan. Jika Anda telah membuat perubahan pada file Web.config dalam proyek MVC 3, Anda juga harus menggabungkan perubahan tersebut ke dalam file Web.config dalam proyek MVC 4.

Untuk meningkatkan aplikasi ASP.NET MVC 3 yang ada secara manual ke versi 4, lakukan hal berikut:

  1. Di semua file Web.config dalam proyek (ada satu di akar proyek, satu di folder Tampilan, dan satu di folder Tampilan untuk setiap area dalam proyek Anda), ganti setiap contoh teks berikut (catatan: System.Web.WebPages, Version=1.0.0.0 tidak ditemukan di proyek yang dibuat dengan Visual Studio 2012):

    System.Web.Mvc, Version=3.0.0.0
    System.Web.WebPages, Version=1.0.0.0
    System.Web.Helpers, Version=1.0.0.0
    System.Web.WebPages.Razor, Version=1.0.0.0
    

    dengan teks terkait berikut:

    System.Web.Mvc, Version=4.0.0.0
    System.Web.WebPages, Version=2.0.0.0
    System.Web.Helpers, Version=2.0.0.0
    System.Web.WebPages.Razor, Version=2.0.0.0
    
  2. Dalam file Web.config root, perbarui elemen webPages:Version ke "2.0.0.0" dan tambahkan kunci PreserveLoginUrl baru yang memiliki nilai "true":

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. Di Penjelajah Solusi, klik kanan Referensi dan pilih Kelola Paket NuGet. Di panel kiri, pilih Online\NuGet sumber paket resmi, lalu perbarui yang berikut ini:

    • ASP.NET MVC 4
    • (Opsional) jQuery, Validasi jQuery, dan UI jQuery
    • (Opsional) Kerangka Kerja Entitas
    • (Optonal) Modernizr
  4. Di Penjelajah Solusi, klik kanan nama proyek lalu pilih Bongkar Proyek. Kemudian klik kanan nama lagi dan pilih Edit ProjectName.csproj.

  5. Temukan elemen ProjectTypeGuids dan ganti {E53F8FEA-EAE0-44A6-8774-FFD645390401} dengan {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Simpan perubahan, tutup file proyek (.csproj) yang Sedang Anda edit, klik kanan proyek, lalu pilih Muat Ulang Proyek.

  7. Jika proyek mereferensikan pustaka pihak ketiga yang dikompilasi menggunakan versi ASP.NET MVC sebelumnya, buka file Web.config root dan tambahkan tiga elemen bindingRedirect berikut di bawah bagian konfigurasi :

    <configuration>
      <!--... elements deleted for clarity ...-->
     
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

Perubahan dari Kandidat Rilis ASP.NET MVC 4

Catatan rilis untuk Kandidat Rilis ASP.NET MVC 4 dapat ditemukan di sini:

Perubahan besar dari ASP.NET MVC 4 Release Candidate dalam rilis ini dirangkum di bawah ini:

  • Konfigurasi per pengontrol: ASP.NET pengontrol Web API dapat dikaitkan dengan atribut kustom yang mengimplementasikan IControllerConfiguration untuk menyiapkan pemformat, pemilih tindakan, dan pengikat parameter mereka sendiri. HttpControllerConfigurationAttribute telah dihapus.
  • Per penanganan pesan rute: Anda sekarang dapat menentukan penangan pesan akhir dalam rantai permintaan untuk rute tertentu. Ini memungkinkan dukungan untuk kerangka kerja ride-along untuk menggunakan perutean untuk dikirim ke titik akhir mereka sendiri (non-IHttpController).
  • Pemberitahuan kemajuan:ProgressMessageHandler menghasilkan pemberitahuan kemajuan untuk entitas permintaan yang diunggah dan entitas respons sedang diunduh. Menggunakan handler ini dimungkinkan untuk melacak seberapa jauh Anda mengunggah isi permintaan atau mengunduh isi respons.
  • Dorong konten: Kelas PushStreamContent memungkinkan skenario di mana produsen data ingin menulis langsung ke permintaan atau respons (baik secara sinkron atau asinkron) menggunakan aliran. Ketika PushStreamContent siap menerima data yang dipanggilnya ke delegasi tindakan dengan aliran output. Pengembang kemudian dapat menulis ke aliran selama yang diperlukan dan menutup aliran ketika penulisan telah selesai. PushStreamContent mendeteksi penutupan aliran dan menyelesaikan Tugas asinkron yang mendasar untuk menulis konten.
  • Membuat respons kesalahan: Gunakan jenis HttpError untuk secara konsisten mewakili informasi kesalahan dari seperti kesalahan validasi dan pengecualian sambil tetap mematuhi IncludeErrorDetailPolicy. Gunakan metode ekstensi CreateErrorResponse baru untuk dengan mudah membuat respons kesalahan dengan HttpError sebagai konten. Konten HttpError sepenuhnya dinegosiasikan.
  • MediaRangeMapping dihapus: Rentang jenis media sekarang ditangani oleh negosiator konten default.
  • Pengikatan parameter default untuk parameter jenis sederhana sekarang adalah [FromUri]: Dalam rilis ASP.NET Web API sebelumnya, pengikatan parameter default untuk parameter jenis sederhana yang digunakan pengikatan model. Pengikatan parameter default untuk parameter jenis sederhana sekarang adalah [FromUri].
  • Pemilihan tindakan menghormati parameter yang diperlukan: Pemilihan tindakan di ASP.NET Web API sekarang hanya akan memilih tindakan jika semua parameter yang diperlukan yang berasal dari URI disediakan. Parameter dapat ditentukan sebagai opsional dengan memberikan nilai default untuk argumen dalam tanda tangan metode tindakan.
  • Kustomisasi pengikatan parameter HTTP: Gunakan ParameterBindingAttribute untuk menyesuaikan pengikatan parameter untuk parameter tindakan tertentu atau gunakan ParameterBindingRules pada HttpConfiguration untuk menyesuaikan pengikatan parameter secara lebih luas.
  • Peningkatan MediaTypeFormatter: Formatter sekarang memiliki akses ke instans HttpContent lengkap.
  • Pemilihan kebijakan buffering host: Terapkan dan konfigurasikan layanan IHostBufferPolicySelector di ASP.NET Web API untuk memungkinkan host menentukan kebijakan kapan buffering akan digunakan.
  • Akses sertifikat klien dengan cara agnostik host: Gunakan metode ekstensi GetClientCertificate untuk mendapatkan sertifikat klien yang disediakan dari pesan permintaan.
  • Ekstensibilitas negosiasi konten: Sesuaikan negosiasi konten dengan berasal dari DefaultContentNegotiator dan ambil alih aspek negosiasi konten apa pun yang Anda inginkan.
  • Dukungan untuk mengembalikan respons 406 Tidak Dapat Diterima: Anda sekarang dapat mengembalikan respons 406 Tidak Dapat Diterima di ASP.NET Web API ketika formatter yang sesuai tidak ditemukan dengan membuat DefaultContentNegotiator dengan parameter excludeMatchOnTypeOnly diatur ke true.
  • Membaca data formulir sebagai NameValueCollection atau JToken: Anda dapat membaca data formulir dalam string kueri URI atau di isi permintaan sebagai NameValueCollection menggunakan metode ekstensi ParseQueryString dan ReadAsFormDataAsync masing-masing. Demikian pula, Anda dapat membaca data formulir dalam string kueri URI atau di isi permintaan sebagai JToken menggunakan metode ekstensi TryReadQueryAsJson dan ReadAsasync<T> masing-masing.
  • Peningkatan multipihak: Sekarang dimungkinkan untuk menulis MultipartStreamProvider yang sepenuhnya disesuaikan dengan jenis data multipihak MIME yang dapat membaca dan menyajikan hasilnya dengan cara optimal kepada pengguna. Anda juga dapat mengaitkan langkah pemrosesan pos pada MultipartStreamProvider yang memungkinkan implementasi untuk melakukan apa pun pasca pemrosesan yang diinginkannya pada bagian isi multipihak MIME. Misalnya, implementasi MultipartFormDataStreamProvider membaca bagian data formulir HTML dan menambahkannya ke NameValueCollection sehingga mudah didapat dari pemanggil.
  • Peningkatan pembuatan tautan:UrlHelper tidak lagi bergantung pada HttpControllerContext. Anda sekarang dapat mengakses UrlHelper dari konteks apa pun di mana HttpRequestMessage tersedia.
  • Perubahan urutan eksekusi handler pesan: Handler pesan sekarang dijalankan dalam urutan dikonfigurasi alih-alih dalam urutan terbalik.
  • Pembantu untuk menghubungkan penangan pesan:HttpClientFactory baru yang dapat menghubungkan DelegatingHandlers dan membuat HttpClient dengan alur yang diinginkan siap digunakan. Ini juga menyediakan fungsionalitas untuk kabel dengan handler dalam alternatif (defaultnya adalah HttpClientHandler) serta melakukan pengabelan saat menggunakan HttpMessageInvoker atau DelegatingHandler lain alih-alih HttpClient sebagai top-invoker.
  • Dukungan untuk CDN di ASP.NET Pengoptimalan Web: ASP.NET Pengoptimalan Web sekarang menyediakan dukungan untuk jalur alternatif CDN yang memungkinkan Anda menentukan untuk setiap bundel URL tambahan yang menunjuk ke sumber daya yang sama pada jaringan pengiriman konten. Mendukung CDN memungkinkan Anda untuk mendapatkan skrip dan bundel gaya Anda secara geografis lebih dekat dengan konsumen akhir aplikasi Web Anda. Aplikasi produksi harus menerapkan fallback saat CDN tidak tersedia. Uji fallback.
  • ASP.NET rute dan konfigurasi Web API dipindahkan ke metode statis WebApiConfig.Register yang dapat digunakan kembali dalam kode pengujian. ASP.NET rute Web API sebelumnya ditambahkan di RouteConfig.RegisterRoutes bersama dengan rute MVC standar. Rute dan konfigurasi API Web ASP.NET default sekarang ditangani dalam metode WebApiConfig.Register terpisah untuk memfasilitasi pengujian.

Masalah yang Diketahui dan Perubahan yang Melanggar

  • Versi RC dan RTM ASP.NET MVC 4 salah mengembalikan tampilan desktop cache saat tampilan seluler harus dikembalikan.

  • Melanggar perubahan di Razor View Engine. Jenis berikut dihapus dari System.Web.Mvc.Razor:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    Metode berikut juga dihapus:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • Ketika WebMatrix.WebData.dll disertakan dalam direktori /bin aplikasi ASP.NET MVC 4, dibutuhkan lebih dari URL untuk autentikasi formulir. Menambahkan rakitan WebMatrix.WebData.dll ke aplikasi Anda (misalnya, dengan memilih "ASP.NET Halaman Web dengan Sintaks Razor" saat menggunakan dialog Tambahkan Dependensi yang Dapat Disebarkan) akan menggantikan pengalihan login autentikasi ke /account/logon daripada /account/login seperti yang diharapkan oleh ASP.NET Pengontrol Akun MVC default. Untuk mencegah perilaku ini dan menggunakan URL yang ditentukan sudah di bagian autentikasi web.config, Anda dapat menambahkan appSetting yang disebut PreserveLoginUrl dan mengaturnya ke true:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Manajer paket NuGet gagal diinstal ketika mencoba menginstal ASP.NET MVC 4 secara berdampingan dari penginstalan Visual Studio 2010 dan Visual Web Developer 2010. Untuk menjalankan Visual Studio 2010 dan Visual Web Developer 2010 berdampingan dengan ASP.NET MVC 4, Anda harus menginstal ASP.NET MVC 4 setelah kedua versi Visual Studio diinstal.

  • Menghapus instalasi ASP.NET MVC 4 gagal jika prasyarat telah dihapus instalasinya. Untuk menghapus instalasi dengan bersih ASP.NET MVC 4Anda harus menghapus instalan ASP.NET MVC 4 sebelum menghapus instalasi Visual Studio.

  • Menginstal jeda ASP.NET MVC 4 ASP.NET aplikasi MVC 3 RTM. ASP.NET aplikasi MVC 3 yang dibuat dengan rilis RTM (bukan dengan rilis Pembaruan Alat MVC 3 ASP.NET ) memerlukan perubahan berikut untuk bekerja berdampingan dengan ASP.NET MVC 4. Membangun proyek tanpa membuat pembaruan ini menghasilkan kesalahan kompilasi.

    Pembaruan yang diperlukan

    1. Dalam file Web.config root, tambahkan entri appSettings> baru< dengan kunci webPages:Version dan nilai 1.0.0.0.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. Di Penjelajah Solusi, klik kanan nama proyek lalu pilih Bongkar Proyek. Kemudian klik kanan nama lagi dan pilih Edit ProjectName.csproj.

    3. Temukan referensi rakitan berikut:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      Ganti dengan yang berikut ini:

      <Reference Include="System.Web.WebPages, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
      <Reference Include="System.Web.Helpers, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      
    4. Simpan perubahan, tutup file proyek (.csproj) yang sedang Anda edit, lalu klik kanan proyek dan pilih Muat Ulang.

  • Mengubah proyek MVC 4 ASP.NET ke target 4.0 dari 4.5 tidak memperbarui referensi perakitan EntityFramework: Jika Anda mengubah proyek MVC 4 ASP.NET menjadi target 4.0 setelah menargetkan 4.5 referensi ke rakitan EntityFramework masih akan menunjuk ke versi 4.5. Untuk memperbaiki masalah ini, hapus instalan dan instal ulang paket EntityFramework NuGet.

  • 403 Terlarang saat menjalankan aplikasi ASP.NET MVC 4 di Azure setelah mengubah ke target 4.0 dari 4.5: Jika Anda mengubah proyek MVC 4 ASP.NET menjadi target 4.0 setelah menargetkan 4.5 lalu menyebarkan ke Azure, Anda mungkin melihat kesalahan Terlarang 403 saat runtime. Untuk mengatasi masalah ini, tambahkan hal berikut ini ke web.config Anda: <modules runAllManagedModulesForAllRequests="true" />

  • Visual Studio 2012 mengalami crash saat Anda mengetik '' dalam literal string dalam file Razor. Untuk mengatasi masalah, masukkan kutipan penutup string literal terlebih dahulu.

  • Menelusuri ke "Akun/Kelola" dalam templat Internet menghasilkan kesalahan runtime untuk bahasa CHS, TRK, dan CHT. Untuk memperbaiki masalah, ubah halaman untuk memisahkan @User.Identity.Name dengan meletakkannya sebagai satu-satunya konten dalam tag yang< kuat>.

  • Penyedia Google dan LinkedIn tidak didukung dalam Situs Web Azure. Gunakan penyedia autentikasi alternatif saat menyebarkan ke Situs Web Azure.

  • Saat menggunakan UriPathExtensionMapping dengan IIS 8 Express/IIS, Anda akan menerima kesalahan 404 Not Found ketika Anda mencoba menggunakan ekstensi. Handler file statis akan mengganggu permintaan ke API web yang menggunakan UriPathExtensionMappings. Atur runAllManagedModulesForAllRequests=true di web.config untuk mengatasi masalah ini.

  • Metode Controller.Execute tidak lagi dipanggil. Semua pengontrol MVC sekarang selalu dijalankan secara asinkron.