c# framework - GlobalConfiguration.Configure () वेब एपीआई 2 और .NET 4.5.1 माइग्रेशन के बाद मौजूद नहीं है





download windows (9)


इनमें से कोई भी समाधान मेरे लिए काम नहीं करता है। मेरे पास Nuget संकुल का एक उलझन था जो एक दूसरे पर परिपत्र निर्भरताओं के कारण अद्यतन नहीं कर सका।

मुझे इसे पुराने तरीके से ठीक करना होगा। मैंने एक नया एमवीसी / वेब एपीआई प्रोजेक्ट बनाया और मैन्युअल रूप से सिस्टम.Web.Http और System.Web.Http.WebHost को नई परियोजना से exisitng समाधान के Nuget फ़ोल्डर्स में कॉपी किया। वहां से मैंने ओएमजी, "ब्राउज़िंग" के संदर्भों को अद्यतन किया और समस्या को ठीक किया।

मैंने हाल ही में अपनी परियोजना को .NET 4.5.1 और वेब एपीआई 2 में माइग्रेट करने के लिए इस मार्गदर्शिका का पालन करना शुरू कर दिया है।

एमएस डेवलपर रिक एंडरसन की पहली बात यह है कि आप ऐसा करने के लिए कहते हैं:

WebApiConfig.Register(GlobalConfiguration.Configuration);

सेवा मेरे

GlobalConfiguration.Configure(WebApiConfig.Register);

global.asax फ़ाइल में। फिर भी जब मैं निर्माण करने की कोशिश करता हूं तो यह मुझे एक त्रुटि दे रहा है:

त्रुटि 1 'System.Web.Http.GlobalConfiguration' में 'कॉन्फ़िगर' के लिए परिभाषा नहीं है

मेरी परियोजना वर्तमान में एमवीसी 5 और वेब एपीआई 2 और .NET 4.5.1 पर है, फिर भी मुझे लगता है कि सिस्टम.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 उसी आश्रित असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला जिन्हें हल नहीं किया जा सका। लॉग संदर्भ शब्दकोष विस्तृत होने पर इन संदर्भ विवादों को बिल्ड लॉग में सूचीबद्ध किया गया है।

और हार्ड बाइंडिंग से छुटकारा पाने से वह ठीक हो रहा था।




"इंस्टॉल-पैकेज Microsoft.AspNet.WebApi.Core" बस ठीक काम किया।




GlobalConfiguration.Configure API "Microsoft.AspNet.WebApi.WebHost" संस्करण = "5.2.3" में उपलब्ध है

और "माइक्रोसॉफ्ट.एस्पनेट.एबएपीआई। वेबहोस्ट" संस्करण = "4.0.0" में नहीं




आप यह जांचना चाह सकते हैं कि आपके प्रोजेक्ट में Microsoft.AspNet.WebApi.WebHostMicrosoft.AspNet.WebApi.WebHost स्थापित है। जैसा कि यह पता चला है, मेरे मामले में, Microsoft.AspNet.WebApi.WebHost किसी अन्य प्रोजेक्ट में स्थापित किया गया था, लेकिन उस विशेष प्रोजेक्ट को नहीं जिसकी आवश्यकता थी। अपने संकुल.कॉन्फिग में, जांचें कि इस तरह की एक रेखा है:

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

यदि यह मौजूद नहीं है, तो आपके पास Microsoft.AspNet.WebApi.WebHost आपके प्रोजेक्ट में स्थापित नहीं है। आप या तो Nuget पैकेज प्रबंधक या पैकेज प्रबंधक कंसोल के माध्यम से स्थापित कर सकते हैं। पैकेज प्रबंधक कंसोल से स्थापित करने के लिए, यह आदेश चलाएं:

Install-Package Microsoft.AspNet.WebApi.WebHost



मेरी समस्या यह थी कि nuget पैकेज प्रबंधक ने वास्तविक अद्यतन नहीं किया था, लेकिन फ़ाइलों में पुराने संस्करणों के संदर्भ शामिल थे, इसलिए मैंने पहले सभी स्थापित एमवीसी संबंधित संकुल (रेज़र और वेब एपीआई सहित) को हटा दिया, फिर उन्हें फिर से स्थापित किया और संस्करण को अपडेट किया दृश्य 3.0.0 में विचार / web.config में रेज़र।




इसे system.web.http.webhost की आवश्यकता है जो इस पैकेज का हिस्सा है। मैंने निम्नलिखित पैकेज को स्थापित करके इसे ठीक किया है:

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

या nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0 में इसके लिए खोजें




साथ ही साथ पैकेज मैनेजर कंसोल का उपयोग करने के लिए प्रोजेक्ट को अद्यतन करने के लिए nuget प्राप्त करने के लिए Microsoft -AspNet.WebApi.WebHost ग्लोबल कॉन्फ़िगरेशन के लिए,

मुझे System.Web.Http का उपयोग कर अनुपलब्ध करने के लिए इंस्टॉल-पैकेज Microsoft.AspNet.WebApi.SelfHost की आवश्यकता है ;




GlobalConfiguration क्लास Microsoft.AspNet.WebApi.WebHost nuget पैकेज का हिस्सा है ... क्या आपने इस पैकेज को वेब एपीआई 2 में अपग्रेड किया है?




जब आप Y y = (Y)x; यह कलाकार संकलक से कहता है "मेरा विश्वास करो, जो भी x है, रनटाइम पर इसे एक Y डाला जा सकता है, तो, बस इसे करें, ठीक है?"

लेकिन जब आप कहते हैं

List<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;

संकलक इन कंक्रीट वर्गों ( Banana और List<Banana> ) में से प्रत्येक के लिए परिभाषाओं को देख सकता है और देख सकता है कि कोई static explicit operator Banana(List<Banana> bananas) परिभाषित नहीं है (याद रखें, एक स्पष्ट कलाकार को या तो परिभाषित किया जाना चाहिए टाइप किया जा रहा प्रकार या किस तरह का जा रहा है, यह spec से है, खंड 17.9.4)। यह संकलन समय पर जानता है कि आप जो कह रहे हैं वह कभी भी सत्य नहीं हो सकता है। तो यह झूठ बोलने के लिए आप पर चिल्लाता है।

लेकिन जब आप कहते हैं

IEnumerable<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;

ठीक है, अब संकलक नहीं जानता है। यह बहुत अच्छा मामला हो सकता है कि जो कुछ भी aBunchOfBananas रन टाइम पर होता है, उसके ठोस प्रकार X static explicit operator Banana(X bananas) परिभाषित कर सकता था। तो संकलक आपको भरोसा करता है, जैसे आपने उससे पूछा था।





c# asp.net-web-api asp.net-mvc-5 asp.net-4.5