GlobalConfiguration.Configure () ไม่มีอยู่หลังจากการโยกย้าย Web API 2 และ. NET 4.5.1


148

ฉันเพิ่งเริ่มทำตามคำแนะนำนี้เพื่อโยกย้ายโครงการของฉันไปยัง. NET 4.5.1 และ Web Api 2

สิ่งแรกที่นักพัฒนา MS Anderson ขอให้คุณทำคือเปลี่ยน:

WebApiConfig.Register(GlobalConfiguration.Configuration);

ถึง

GlobalConfiguration.Configure(WebApiConfig.Register);

ในไฟล์ global.asax แต่สิ่งนี้ทำให้ฉันมีข้อผิดพลาดเมื่อฉันพยายามสร้าง:

ข้อผิดพลาด 1 'System.Web.Http.GlobalConfiguration' ไม่มีคำจำกัดความสำหรับ 'กำหนดค่า'

ปัจจุบันโครงการของฉันใช้ MVC 5 และ Web Api 2 และ. NET 4.5.1 แต่ฉันคิดว่า System.Web.Http ยังคงคิดว่าเป็นรุ่น. NEt 4.0

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

ขอบคุณ.

แก้ไข:

นี่คือการผูกการชุมนุมของฉัน:

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

ทุกอย่างแสดงความคิดเห็นหลังจากที่มีการแสดงความคิดเห็นด้านบนเพราะฉันได้รับข้อผิดพลาด:

คำเตือน 2 พบข้อขัดแย้งระหว่างเวอร์ชันที่ต่างกันของแอสเซมบลีที่ขึ้นต่อกันแบบเดียวกันซึ่งไม่สามารถแก้ไขได้ ข้อขัดแย้งของการอ้างอิงเหล่านี้จะแสดงรายการในบิลด์บิลด์เมื่อตั้งค่า verbosity เป็นรายละเอียด

และการกำจัดการผูกที่แน่นหนานั้นกำลังแก้ไขสิ่งนั้น


1
คุณถอนการติดตั้งMicrosoft.AspNet.Web.Helpers.Mvcครั้งแรก?
Blaise

ดูคำตอบของฉันstackoverflow.com/a/20653546/3114457ควรแก้ไขปัญหาของคุณเกี่ยวกับการย้ายข้อมูล
Livius

5
โปรดทำเครื่องหมายstackoverflow.com/a/21514748/2343เป็นคำตอบที่ถูกต้อง!
Sameer Alibhai

คำตอบ:


271

มันต้องการ system.web.http.webhost ซึ่งเป็นส่วนหนึ่งของแพ็คเกจนี้ ฉันแก้ไขสิ่งนี้โดยการติดตั้งแพ็คเกจต่อไปนี้:

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

หรือค้นหาใน nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0


ถูกเพิ่มโดยอัตโนมัติเมื่อฉันเพิ่มตัวควบคุม API ฉันต้องรีสตาร์ท VS2015 เพื่อให้มันทำงานได้ ฉันทำทุกอย่างที่แนะนำในหน้านี้ด้วยดังนั้นไม่แน่ใจว่าสิ่งที่เป็นปัญหาจริง
Piotr Kula

6
นั่นไม่ได้ผลสำหรับฉัน แพคเกจติดตั้งแล้วในโครงการของฉัน
Shimmy Weitzhandler

สิ่งที่น่าสนใจคือเว็บโฮสต์ติดตั้งไว้แล้วและยังใช้งานไม่ได้จากนั้นฉันเปลี่ยนลำดับที่GlobalConfiguration.Configure(WebApiConfig.Register);ถูกแทรกใน global.asax ไปด้านบนหลังจากการลงทะเบียนพื้นที่และมันทำงานได้ดี
PedroSouki

ทำไมพวกเขาไม่ได้เขียนอะไรแบบนี้? ฉันใช้เวลาครึ่งชั่วโมงกว่าจะหาคำตอบของคุณ
Homayoun Behzadian

ทำงานให้ฉันหลังจากอัปเดตMicrosoft.AspNet.WebApi.WebHostเป็นเวอร์ชันล่าสุด
Peter van Kekem

86

แนวคิดเหล่านี้ไม่ได้ช่วยโครงการของฉันโดยใช้ MVC 5.2.2

  • System.web.Http 5.2.2 ได้รับการติดตั้งแล้ว
  • การลบโฟลเดอร์แพคเกจและดาวน์โหลดไลบรารี NuGet ใหม่ทั้งหมดไม่ได้ทำอะไร
  • Web.config มีรายการ dependentAssembly สำหรับ System.Web.Http แล้ว

การบังคับให้ติดตั้งใหม่แก้ไขปัญหา จากคอนโซลตัวจัดการแพ็คเกจของ NuGet:

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


1
ฉันมีปัญหาเดียวกัน แต่การติดตั้งใหม่ไม่สามารถแก้ไขได้อย่างน้อยก็ดูเหมือนว่ามันกำลังทำให้ฉันติดขัดฉันต้องรีสตาร์ท VS2015 และแยกออก
Piotr Kula

ดูเหมือนว่าการรวมกันของการรีสตาร์ท vs2013 + การติดตั้งใหม่ช่วยแก้ปัญหาให้ฉันได้
Ram

43

GlobalConfigurationclass เป็นส่วนหนึ่งของMicrosoft.AspNet.WebApi.WebHostแพ็คเกจ nuget ... คุณอัพเกรดแพ็คเกจนี้เป็น Web API 2 หรือไม่


1
ใช่. It's Version 5.0.0
nzondlo

1
คุณจะมีการผูกเปลี่ยนเส้นทางประกอบใน web.config ของคุณ? ถ้าใช่คุณสามารถแบ่งปันพวกเขาได้หรือไม่ ... ฉันกำลังมองหาเฉพาะที่เกี่ยวข้องกับ System.Web.Http * แอสเซมบลี ..
Kiran Challa

ฉันเพิ่งโพสต์การเชื่อมโยงการชุมนุมของฉันทั้งหมด
nzondlo

30

รวมทั้งการใช้แพคเกจคอนโซลการจัดการที่จะได้รับ nuget ในการปรับปรุงโครงการที่มีการติดตั้งแพคเกจ Microsoft.AspNet.WebApi.WebHost หายไปGlobalConfiguration ,

ฉันต้องการแพคเกจติดตั้ง Microsoft.AspNet.WebApi.SelfHostหากไม่ได้ใช้งาน System.Web.Http;


1
คุณช่วยอธิบายอีกเล็กน้อยได้ไหม?
Dieter Meemken

10

คุณอาจต้องการตรวจสอบว่าโครงการของคุณMicrosoft.AspNet.WebApi.WebHostติดตั้งแล้ว ตามที่ปรากฎในกรณีของฉันMicrosoft.AspNet.WebApi.WebHostติดตั้งในโครงการอื่น แต่ไม่ใช่โครงการที่ต้องการ ในแพคเกจของคุณกำหนดค่าตรวจสอบว่ามีบรรทัดเช่นนี้:

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

หากไม่มีอยู่แสดงว่าคุณไม่ได้Microsoft.AspNet.WebApi.WebHostติดตั้งในโครงการของคุณ คุณสามารถติดตั้งโดยใช้ Nuget Package Manager หรือผ่าน Package Manager Console หากต้องการติดตั้งจาก Package Manager Console ให้รันคำสั่งนี้:

Install-Package Microsoft.AspNet.WebApi.WebHost

5

GlobalConfiguration.Configure API มีอยู่ใน "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"

และไม่อยู่ใน "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"


3

หากปัญหายังคงอยู่หลังจากถอนการติดตั้งและติดตั้ง Microsoft.AspNet.WebApi.WebHost แล้วให้เพิ่มสิ่งต่อไปนี้ใน web.config เพื่อให้การกำหนดค่าส่วนกลางทำงาน

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

สิ่งนี้มีอยู่ในเว็บของฉันแล้ว ยังคงมีปัญหา (VS2015)
Piotr Kula


1

ปัญหาของฉันคือการที่ผู้จัดการแพคเกจ nuget ไม่ได้ทำการปรับปรุงจริง แต่ไฟล์ที่มีการอ้างอิงถึงรุ่นที่เก่ากว่าดังนั้นฉันก่อนลบแพคเกจที่เกี่ยวข้อง mvc ติดตั้งทั้งหมด (รวมถึงมีดโกนและเว็บ API) จากนั้นติดตั้งพวกเขาอีกครั้ง มีดโกนใน views / web.config เป็นเวอร์ชัน 3.0.0


1

ไม่มีวิธีแก้ปัญหาเหล่านี้สำหรับฉัน ฉันมีแพ็กเกจ Nuget จำนวนมากที่ไม่สามารถอัปเดตได้เนื่องจากการพึ่งพาแบบวนรอบซึ่งกันและกัน

ฉันจะต้องแก้ไขปัญหานี้ด้วยวิธีที่ล้าสมัย ฉันสร้างโครงการ MVC / web api ใหม่และคัดลอกด้วยตนเองSystem.Web.HttpและSystem.Web.Http.WebHostจากโครงการใหม่ไปยังโฟลเดอร์ Nuget ของโซลูชัน exisitng จากที่นั่นฉันอัปเดตข้อมูลอ้างอิงโดย, OMG, "การค้นหา" และแก้ไขปัญหา


0

สิ่งนี้สามารถแก้ไขปัญหานี้ได้โดยการเพิ่มเนมสเปซไปยังไฟล์ Global.asax.cs

ใช้ System.Web.Http;

การแก้ไขปัญหานี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.