GlobalConfiguration.Configure (), Web API 2 ve .NET 4.5.1 geçişinden sonra mevcut değil


148

Yakın zamanda projemi .NET 4.5.1 ve Web Api 2'ye geçirmek için bu kılavuzu izlemeye başladım .

MS geliştiricisi Rick Anderson'ın sizden yapmasını istediği ilk şey değişimdir:

WebApiConfig.Register(GlobalConfiguration.Configuration);

için

GlobalConfiguration.Configure(WebApiConfig.Register);

global.asax dosyasında. Yine de inşa etmeye çalıştığımda bana bir hata veriyor:

Hata 1 'System.Web.Http.GlobalConfiguration', 'Yapılandır' için bir tanım içermiyor

Projem şu anda MVC 5 ve Web Api 2 ve .NET 4.5.1'de, ancak System.Web.Http'nin hala .NEt 4.0 sürümü olduğunu düşünüyor.

Bunu nasıl düzeltebilirim?

Teşekkür ederim.

Düzenle:

İşte montaj bağlarım:

<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>

Hatayı alıyordum çünkü üst yorumlandıktan sonra her şey yorumladı:

Uyarı 2 Aynı bağımlı derlemenin çözümlenemeyen farklı sürümleri arasında çakışmalar bulundu. Bu ayrıntı çakışmaları, günlük ayrıntı ayrıntıları ayrıntılı olarak ayarlandığında derleme günlüğünde listelenir.

ve sert bağlardan kurtulmak bunu düzeltiyordu.


1
Microsoft.AspNet.Web.Helpers.MvcÖnce kaldırdınız mı ?
Blaise

cevabıma bak stackoverflow.com/a/20653546/3114457 göç ile ilgili sorunlarınızı
çözmeli

5
Lütfen stackoverflow.com/a/21514748/2343 adresini doğru yanıt olarak işaretleyin !
Sameer Alibhai

Yanıtlar:


271

Bu paketin bir parçası olan system.web.http.webhost'a ihtiyacı var. Aşağıdaki paketi yükleyerek bunu düzelttim:

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

veya nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0 içinde arayın


Bir API denetleyicisi eklediğimde otomatik olarak eklendi. Devam etmek için VS2015'i yeniden başlatmak zorunda kaldım. Ayrıca bu sayfada önerilen her şeyi yaptım, bu yüzden asıl sorunun ne olduğundan emin değilim.
Piotr Kula

6
Bu benim için işe yaramadı. Paket zaten projeme yüklenmiş.
Shimmy Weitzhandler

İlginçtir, webhost zaten kurulmuştu ve hala çalışmıyor, o zaman GlobalConfiguration.Configure(WebApiConfig.Register);Alan.Kayıttan hemen sonra global.asax içine yerleştirildiği sırayı değiştirdim ve gayet iyi çalıştı.
PedroSouki

neden böyle bir şey yazmadılar? cevabını bulmam yarım saat sürüyor
Homayoun Behzadian

Microsoft.AspNet.WebApi.WebHostEn son sürüme güncelledikten sonra benim için çalıştı
Peter van Kekem

86

Bu fikirlerin hiçbiri MVC 5.2.2 kullanarak projeme yardımcı olmadı.

  • System.web.Http 5.2.2 zaten kurulmuş
  • Packages klasörünü silmek ve tüm NuGet kitaplıklarını tamamen yeniden yüklemek hiçbir şey yapmadı
  • Web.config dosyasında System.Web.Http için bir bağımlıAssembly girdisi zaten vardı

Yeniden yüklemeyi zorlamak sorunu düzeltti. NuGet paket yöneticisi konsolundan:

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


1
Aynı sorunu vardı ama yeniden yükleme düzeltmek vermedi, en azından böyle görünüyordu ve bana deli sürüş, VS2015 yeniden başlatmak zorunda kaldı ve dizildi.
Piotr Kula

Yeniden başlatma vs2013 + yeniden yükleme kombinasyonu benim için sorunu çözdü
Ram

43

GlobalConfigurationclass Microsoft.AspNet.WebApi.WebHostnuget paketinin bir parçası ... Bu paketi Web API 2'ye yükselttiniz mi?


1
Evet. Sürüm 5.0.0
nzondlo

1
web.config dosyasında bir derleme bağlayıcı yönlendirmeleri var mı? evet ise, onları paylaşabilir misiniz ... özellikle System.Web.Http * meclisleri ile ilgili olup olmadığını arıyorum ..
Kiran Challa

Tüm Meclis Bağlamalarımı yeni yayınladım.
nzondlo

30

GlobalConfiguration'ı eksik olduğu için projeyi Install-Package Microsoft.AspNet.WebApi.WebHost ile güncellemek üzere nuget almak için Paket yöneticisi konsolunu kullanmanın yanı sıra ,

System.Web.Http kullanarak eksik için Install-Package Microsoft.AspNet.WebApi.SelfHost gerekli ;


1
Biraz daha açıklayabilir misiniz?
Dieter Meemken

10

Projenizin Microsoft.AspNet.WebApi.WebHostkurulu olup olmadığını kontrol etmek isteyebilirsiniz . Görünüşe göre, benim durumumda, Microsoft.AspNet.WebApi.WebHostbaşka bir projeye kuruldu, ancak buna ihtiyaç duyan belirli bir proje değil. Packages.config dosyasında, böyle bir satırın orada olup olmadığını kontrol edin:

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

Bu yoksa Microsoft.AspNet.WebApi.WebHost, projenize yüklenmediniz. Nuget Paket Yöneticisi'ni veya Paket Yöneticisi Konsolu'nu kullanarak yükleme yapabilirsiniz. Paket Yöneticisi Konsolu'ndan yüklemek için şu komutu çalıştırın:

Install-Package Microsoft.AspNet.WebApi.WebHost

5

GlobalConfiguration.Configure API'sı "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3" adresinde mevcuttur.

ve "Microsoft.AspNet.WebApi.WebHost" sürüm = "4.0.0" içinde değil


3

Microsoft.AspNet.WebApi.WebHost kaldırıldıktan ve yüklendikten sonra sorun devam ederse, globalconfiguration'ın çalışması için web.config dosyasına da aşağıdakileri ekleyin

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

Bu zaten web.config dosyamdaydı. Hâlâ sorun yaşıyor (VS2015)
Piotr Kula


1

Benim sorunum nuget paket yöneticisi gerçek bir güncelleme yapmadım ama dosyaları eski sürümlere referanslar içeriyordu, bu yüzden ilk önce tüm kurulu mvc ilgili paketleri (jilet ve web api dahil) kaldırdıktan sonra tekrar yükledim ve jilet views / web.config 3.0.0 sürümüne.


1

Bu çözümlerin hiçbiri benim için işe yaramadı. Birbirlerine dairesel bağımlılıklar nedeniyle güncellenemeyen bir Nuget paketleri arapsalarım vardı.

Bunu eski moda bir şekilde düzeltmek zorunda kalacağım. Ben yeni bir MVC / web API projesi oluşturulan ve elle kopyalanan System.Web.Httpve System.Web.Http.WebHostyeni projesinden exisitng çözümün Nuget klasörler halinde. Oradan referansları OMG tarafından "tarama" yaparak güncelledim ve sorunu düzelttim.


0

bu, Global.asax.cs dosyasına ad alanı ekleyerek bu sorunu çözdü.

System.Web.Http kullanarak;

bu sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.