Baru-baru ini saya mulai mengikuti panduan ini untuk memigrasi proyek saya ke .NET 4.5.1 dan Web Api 2.
Hal pertama yang diminta pengembang MS Rick Anderson lakukan adalah perubahan:
WebApiConfig.Register(GlobalConfiguration.Configuration);
untuk
GlobalConfiguration.Configure(WebApiConfig.Register);
dalam file global.asax. Namun ini memberi saya kesalahan ketika saya mencoba membangun:
Kesalahan 1 'System.Web.Http.GlobalConfiguration' tidak mengandung definisi untuk 'Konfigurasi'
Proyek saya saat ini di MVC 5 dan Web Api 2 dan .NET 4.5.1, namun saya pikir System.Web.Http masih berpikir itu adalah versi .NEt 4.0.
Bagaimana saya bisa memperbaiki ini?
Terima kasih.
Edit:
Inilah binding perakitan saya:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<!--
<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>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly> -->
</assemblyBinding>
Semuanya berkomentar setelah bagian atas dikomentari karena saya mendapatkan kesalahan:
Peringatan 2 Ditemukan konflik antara versi berbeda dari rakitan dependen yang sama yang tidak dapat diselesaikan. Konflik referensi ini tercantum dalam log bangunan ketika verbositas log diatur ke detail.
dan menyingkirkan ikatan keras memperbaiki itu.
sumber
Microsoft.AspNet.Web.Helpers.Mvc
dulu?Jawaban:
Perlu system.web.http.webhost yang merupakan bagian dari paket ini. Saya memperbaikinya dengan menginstal paket berikut:
atau cari di nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
sumber
GlobalConfiguration.Configure(WebApiConfig.Register);
dimasukkan ke global.asax ke atas tepat setelah AreaRegistration, dan itu berhasil dengan baik.Microsoft.AspNet.WebApi.WebHost
ke versi terbaruTidak satu pun dari ide ini yang membantu proyek saya menggunakan MVC 5.2.2.
Memaksa menginstal ulang memperbaiki masalah. Dari konsol manajer paket NuGet:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
sumber
GlobalConfiguration
class adalah bagian dariMicrosoft.AspNet.WebApi.WebHost
paket nuget ... Sudahkan Anda meningkatkan paket ini ke Web API 2?sumber
Serta menggunakan konsol Package manager untuk mendapatkan nuget untuk memperbarui proyek dengan Instal-Paket Microsoft.AspNet.WebApi.WebHost untuk GlobalConfiguration yang hilang ,
Saya membutuhkan Paket-Instal Microsoft.AspNet.WebApi.SelfHost agar tidak menggunakan System.Web.Http;
sumber
Anda mungkin ingin memeriksa apakah proyek Anda telah
Microsoft.AspNet.WebApi.WebHost
diinstal. Ternyata, dalam kasus saya,Microsoft.AspNet.WebApi.WebHost
dipasang di proyek lain, tetapi bukan proyek tertentu yang membutuhkannya. Di paket.config Anda, periksa apakah ada baris seperti ini:Jika itu tidak ada, Anda belum
Microsoft.AspNet.WebApi.WebHost
menginstal di proyek Anda. Anda dapat menginstal menggunakan Nuget Package Manager atau melalui Package Manager Console. Untuk menginstal dari Package Manager Console, jalankan perintah ini:sumber
GlobalConfiguration.Configure API tersedia dalam "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"
dan tidak dalam "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"
sumber
Jika masalah tetap ada setelah menghapus dan menginstal Microsoft.AspNet.WebApi.WebHost maka tambahkan juga yang berikut ini di web.config agar konfigurasi global berfungsi.
sumber
"Instal-Paket Microsoft.AspNet.WebApi.Core" bekerja dengan baik.
sumber
Masalah saya adalah bahwa manajer paket nuget tidak melakukan pembaruan nyata tetapi file-file berisi referensi ke versi yang lebih lama, jadi saya pertama kali menghapus semua paket terkait mvc yang diinstal (termasuk pisau cukur dan api web) kemudian menginstalnya lagi dan memperbarui versi pisau cukur dalam tampilan / web.config ke versi 3.0.0.
sumber
Tidak ada solusi yang berhasil untuk saya. Saya memiliki kusut paket Nuget yang tidak dapat memperbarui karena ketergantungan melingkar satu sama lain.
Saya harus memperbaiki ini dengan cara kuno. Saya membuat proyek MVC / web api baru dan secara manual menyalin
System.Web.Http
danSystem.Web.Http.WebHost
dari proyek baru ke folder Nuget dari solusi yang ada. Dari sana saya memperbarui referensi dengan, OMG, "menjelajah" dan memperbaiki masalah.sumber
ini menyelesaikan masalah ini dengan menambahkan namespace ke file Global.asax.cs.
menggunakan System.Web.Http;
ini menyelesaikan masalah.
sumber