GlobalConfiguration.Configure () tidak hadir setelah migrasi Web API 2 dan .NET 4.5.1


148

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.


1
Sudahkah Anda mencopot pemasangan Microsoft.AspNet.Web.Helpers.Mvcdulu?
Blaise

lihat jawaban saya stackoverflow.com/a/20653546/3114457 itu seharusnya memperbaiki masalah Anda dengan migrasi
Livius

5
Silakan tandai stackoverflow.com/a/21514748/2343 sebagai jawaban yang benar!
Sameer Alibhai

Jawaban:


271

Perlu system.web.http.webhost yang merupakan bagian dari paket ini. Saya memperbaikinya dengan menginstal paket berikut:

PM> Install-Package Microsoft.AspNet.WebApi.WebHost 

atau cari di nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0


Ditambahkan secara otomatis ketika saya menambahkan kontroler API. Saya harus memulai ulang VS2015 untuk menjalankannya. Saya juga melakukan semua yang direkomendasikan di halaman ini jadi tidak yakin apa masalah sebenarnya.
Piotr Kula

6
Itu tidak berhasil untuk saya. Paket sudah diinstal di proyek saya.
Shimmy Weitzhandler

Yang menarik adalah bahwa hosting sudah diinstal dan masih tidak berfungsi, maka saya mengubah urutan yang GlobalConfiguration.Configure(WebApiConfig.Register);dimasukkan ke global.asax ke atas tepat setelah AreaRegistration, dan itu berhasil dengan baik.
PedroSouki

mengapa mereka tidak menulis sesuatu seperti itu? butuh setengah jam bagi saya untuk menemukan jawaban Anda
Homayoun Behzadian

Bekerja untuk saya setelah memperbarui Microsoft.AspNet.WebApi.WebHostke versi terbaru
Peter van Kekem

86

Tidak satu pun dari ide ini yang membantu proyek saya menggunakan MVC 5.2.2.

  • System.web.Http 5.2.2 sudah diinstal
  • Menghapus folder Paket dan mengunduh ulang sepenuhnya semua pustaka NuGet tidak melakukan apa-apa
  • Web.config sudah memiliki entriAsassembly dependen untuk System.Web.Http

Memaksa menginstal ulang memperbaiki masalah. Dari konsol manajer paket NuGet:

update-Package -reinstall Microsoft.AspNet.WebApi.WebHost


1
Saya memiliki masalah yang sama tetapi menginstal ulang tidak memperbaikinya, paling tidak terlihat seperti itu dan membuat saya gila, saya harus me-restart VS2015 dan beres.
Piotr Kula

Sepertinya kombinasi restart vs2013 + instal ulang menyelesaikan masalah untuk saya
Ram

43

GlobalConfigurationclass adalah bagian dari Microsoft.AspNet.WebApi.WebHostpaket nuget ... Sudahkan Anda meningkatkan paket ini ke Web API 2?


1
Iya. Versi 5.0.0
nzondlo

1
apakah Anda memiliki arahan pengikat rakitan di web.config Anda? jika ya, bisakah Anda membagikannya ... saya secara khusus mencari apakah ada yang terkait dengan System.Web.Http * assemblies ..
Kiran Challa

Saya baru saja memposting semua Binding Majelis saya.
nzondlo

30

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;


1
Bisakah Anda jelaskan lebih banyak?
Dieter Meemken

10

Anda mungkin ingin memeriksa apakah proyek Anda telah Microsoft.AspNet.WebApi.WebHostdiinstal. Ternyata, dalam kasus saya, Microsoft.AspNet.WebApi.WebHostdipasang di proyek lain, tetapi bukan proyek tertentu yang membutuhkannya. Di paket.config Anda, periksa apakah ada baris seperti ini:

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />

Jika itu tidak ada, Anda belum Microsoft.AspNet.WebApi.WebHostmenginstal di proyek Anda. Anda dapat menginstal menggunakan Nuget Package Manager atau melalui Package Manager Console. Untuk menginstal dari Package Manager Console, jalankan perintah ini:

Install-Package Microsoft.AspNet.WebApi.WebHost

5

GlobalConfiguration.Configure API tersedia dalam "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"

dan tidak dalam "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"


3

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.

 <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>

Ini sudah ada di web.config saya. Masih mengalami masalah (VS2015)
Piotr Kula


1

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.


1

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.Httpdan System.Web.Http.WebHostdari proyek baru ke folder Nuget dari solusi yang ada. Dari sana saya memperbarui referensi dengan, OMG, "menjelajah" dan memperbaiki masalah.


0

ini menyelesaikan masalah ini dengan menambahkan namespace ke file Global.asax.cs.

menggunakan System.Web.Http;

ini menyelesaikan masalah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.