फ़ाइल या असेंबली को लोड नहीं किया जा सका। System.Net.Http, संस्करण = 4.0.0.0 ASP.NET (MVC 4) के साथ वेब API OData Prelelease


81

मुसीबत

Microsoft ASP.NET वेब API OData पैकेज 5.0.0-rc1 prerelease स्थापित करने के बाद मैं निम्नलिखित अपवाद के साथ समाप्त होता हूं:

फ़ाइल या असेंबली लोड नहीं कर सका 'System.Web.Http, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35' या इसकी एक निर्भरता। स्थित असेंबली की प्रकट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)

मेरा MVC 4 प्रोजेक्ट एकदम नया है और वास्तव में छोटा है, इसमें कुछ भी फैंसी नहीं है। मैं .NET फ्रेमवर्क 4.5 को लक्षित करता हूं

मुझे डेल्टा क्लास का उपयोग करके पैट को लागू करने के लिए इस नगेट पैकेज की आवश्यकता है (जब मैं पैकेज के संस्करण 4.0.0.0 का उपयोग करता हूं, तो डेल्टा क्लास काम नहीं कर रहा है)।

मैं कैसे इसे ठीक कर सकता हूं?

System.Web.Http के मेरे संस्करण

में GAC मैं संस्करण है 5.0.0.0 System.Web.Http की

gacutil -l System.Web.Http ग्लोबल असेंबली कैश में निम्नलिखित असेंबली शामिल हैं: System.Web.Http, संस्करण = 5.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364335, processorArchitecture = MSIL

में विजुअल स्टूडियो , जब मैं विधानसभाओं ब्राउज़, System.Web.Http की दी गई संस्करण है 4.0.0.0 (क्यों?)

में अपने प्रोजेक्ट , System.Web.Http के संदर्भ में

  • संस्करण 5.0.0.0 है
  • पैकेज के \ lib \ net45 \ फ़ोल्डर को इंगित करता है
  • है CopyLocal = सच

चीजें मैंने कोशिश कीं

मैंने Web.config में redirect v 4.0.0.0 से 5.0.0.0 बाँधने की कोशिश की

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

लेकिन यह मुझे एक और अपवाद देता है:

फ़ील्ड 'System.Web.Http.GlobalConfiguration.CS' तक पहुँचने के लिए 'System.Web.Http.GlobalConfiguration..cctor ()' पद्धति से प्रयास $ <> 9__CachedAnonymousAethodDelegate2 'विफल रहा।

मुझे लगता है कि v 4.0.0.0 को वास्तव में कोर वेब एपी इंजन द्वारा उपयोग करने की आवश्यकता है।

जुड़े हुए प्रश्न

कोड विश्लेषण त्रुटि फ़ाइल या असेंबली को लोड नहीं कर सका 'System.Net.Http, संस्करण = 2.0.0.0 MVC4 वेब API में फ़ाइल या असेंबली लोड नहीं कर सका' System.Net.Http, संस्करण = 2.0.0.0 MVC4 वेब API में


1
शायद यह जवाब आपकी मदद कर सकता है: stackoverflow.com/a/18700279/795876
fsenart

जवाबों:


164

विजुअल स्टूडियो 2013 में इसकी देखभाल के लिए एक नई सुविधा है। जब आप एप्लिकेशन का निर्माण करते हैं, तो आपको विधानसभा के विभिन्न संस्करणों के संदर्भ में चेतावनी दी जानी चाहिए। Web.config में असेंबली बाइंडिंग रीडायरेक्ट को जोड़ने के लिए चेतावनी पर डबल क्लिक करें।

अधिक जानकारी के लिए http://msdn.microsoft.com/en-us/library/2fc472t2.aspx देखें ।

नीचे दिए गए jeff.eynon नोटों में स्वचालित रूप से फ़ाइल को संपादित करने के लिए VS प्राप्त करने के लिए आपको web.config की जाँच (यदि TFS स्रोत नियंत्रण का उपयोग करके) करनी है। पारितोषिक के लिए धन्यवाद!


7
काश मैं इस 10 बार उत्थान कर पाता। वीएस होने से यह स्वचालित रूप से अच्छा था। टिप के लिए धन्यवाद!
बॉब हॉर्न

4
दुर्भाग्य से यह हमेशा काम नहीं करता है। वास्तव में मैं अधिक बार नहीं कहूंगा, इस चेतावनी पर डबल-क्लिक करने से कुछ नहीं होता है।
ट्रेवर डे कोएकोक

3
आपके पास वेब / एप्लिकेशन कॉन्फिगर को चेक आउट संशोधित करना होगा। जो भी कारण के लिए वीएस इस मामले में आपके लिए फ़ाइल की जांच करने के लिए तैयार नहीं दिखता है।
jeff.eynon

39

मैंने इसे Nuget के उपयोग से पूर्व-संस्करण के लिए WebApi पैकेज को अपग्रेड करके काम किया:

PM> Microsoft.AspNet.WebApi -Pre

वेबएपीआई के नवीनतम संस्करण का उपयोग करके परियोजना को मजबूर करने के लिए, मूल Web.config में कुछ संशोधन आवश्यक थे:

1) वेबपेजेस वर्जन 2.0.0.0 से 3.0.0.0 तक

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
</appSettings>

2) बाइंड रीडायरेक्ट 5.0.0.0 के लिए System.Web.Http और System.Net.Http.Formatting

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<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>

मुझे लगता है कि यह है

पुनश्च: वेबएपीआई ओडाटा 5.0 बीटा से अत्यधिक प्रेरित समाधान - ग्लोबलकॉन्फ़िगरेशन एक्सेस करना सुरक्षा त्रुटि को फेंकता है


3
यह मेरे लिए काम करता है - मैंने इसी मुद्दे का सामना किया जब अद्यतन system.net.http निर्भरता के कारण नवीनतम CORS वेब एपीआई पैकेज स्थापित किया।
संदीप तालबाथुला

1
आप रॉक मैन, बहुत बहुत धन्यवाद। मेरे मामले में नगेट रिस्टोर द्वारा वेब कॉन्फिग को अपडेट नहीं किया गया था, मैं इसे तैनाती के बाद मैन्युअल रूप से करता हूं।
Leandro

इसी तरह, यह एक +1 हो जाता है क्योंकि जब VS आपके लिए ऐसा नहीं करता है, तो आपको इस जवाब की आवश्यकता है कि आप बाध्यकारी कार्य को स्वयं करने में सक्षम हों।
माइकल ब्लैकबर्न

11

मैं एक ही समस्या से मिला और मैंने इसे निम्न लिबास के लिए सच के लिए CopyLocal सेट करके हल किया:

System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll

मुझे यह जोड़ना होगा कि मैं MVC4 और NET 4 का उपयोग करता हूं


1
यह मेरे लिए भी हल - हालांकि, मैं वास्तव में जानना चाहता हूं कि इसका वास्तव में क्या मतलब है?
सेरुप

11

मैंने इस मुद्दे का अनुभव किया जब मैंने प्रोजेक्ट टेम्पलेट से हॉट तौलिया प्रोजेक्ट को अपडेट करने का प्रयास किया और जब मैंने एक खाली प्रोजेक्ट बनाया और वीएस 2012 में 10/23/2013 के रूप में हॉटेट को एनजीट के माध्यम से स्थापित किया।

ठीक करने के लिए, मैंने नुगेट के माध्यम से वेब एपि वेब होस्ट और वेब एपीआई पैकेजों को 5.0 तक अपडेट किया, वर्तमान में नुगेट में वर्तमान संस्करण (10/23/2013)।

मैंने तब बाध्यकारी निर्देश जोड़े:

<dependentAssembly>
  <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<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>

8

या आप यह NuGet Package Manager कंसोल से कर सकते हैं

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

और फिर आप System.Web.Http.WebHost 5.0 का संदर्भ जोड़ पाएंगे


4

निकालें System.Web.Http और System.Net.Http.Formatting को अपने संदर्भों से हटा दें और अपने बिन फ़ोल्डर में ब्राउज़ करके संदर्भों को वापस जोड़ें (जहां उन्हें nuget द्वारा कॉपी किया गया था) अब फ़ाइल संस्करण 5.0.0.0 कहता है


1

यह त्रुटि कई अलग-अलग परियोजनाओं पर कई बार पॉप अप हुई।

आखिरकार मुझे पता चला कि जब मैं निर्माण करूंगा, तो मेरे बिन फ़ोल्डर में पहले से ही system.web.mvc बाइनरी असेंबली की एक प्रति मौजूद थी।

इसे ठीक करने के लिए, संदर्भ की सूची में विधानसभा पर राइट-क्लिक करें और "गुण" चुनें। यह देखने के लिए जांचें कि क्या यह "संस्करण" संपत्ति को देखकर नवीनतम संस्करण है। यदि ऐसा है, तो "स्थानीय कॉपी करें" को सही पर स्विच करें।

यह सुनिश्चित करेगा कि आपकी परियोजना में संदर्भित संस्करण वह संस्करण है जो आपके बायनेरी फ़ोल्डर में समाप्त हो जाएगा।

यदि आप अभी भी त्रुटि प्राप्त करते हैं, तो नवीनतम संस्करण प्राप्त करने के लिए nuGet चलाने का प्रयास करें, फिर फिर से उपरोक्त प्रयास करें।

सौभाग्य - यह त्रुटि एक दर्द है!


1

मैंने उसी त्रुटि का सामना किया। जब मैंने डिपेंडेंसी इंजेक्शन के लिए यूनिटी फ्रेमवर्क स्थापित किया, तो मेरे कॉन्फ़िगरेशन में Http और HttpFormatter के नए संदर्भ जोड़े गए हैं। तो यहां पर मैंने जो कदम उठाए हैं।

मैं nuGet पैकेज मैनेजर कंसोल पर निम्न कमांड चलाता हूं: PM> इंस्टॉल-पैकेज Microsoft.ASPNet.WebAPI.pre

और संस्करण 5.0 के साथ dll में भौतिक संदर्भ जोड़ा गया


1

मैं रास्ते से हल चलाना। पहले आप नगेट स्थापित करें। दूसरा आप उपयोग करें।
चित्रण का पालन करें:

तीसरा: यह देखने के लिए जांचें कि क्या यह "संस्करण" संपत्ति को देखकर नवीनतम संस्करण है।

अंतिम: आप जाँच परियोजना फिर से नवीनतम संस्करण है।


0

मैंने एक ही प्रकार के मुद्दे का सामना किया है और समस्या को हल करने के लिए निम्न चरणों का पालन किया है

टूल्स -> लाइब्रेरी पैकेज मैनेजर -> पैकेज मैनेजर कंसोल पर जाएं और नीचे कमांड चलाएं

Microsoft-ASPNet.WebAPI -pre स्थापित करें


0

Web.configऊपर बताए अनुसार फ़ाइल में संदर्भ संशोधित करने के बाद , हमने संदर्भों को हल किया।

मैं इसी तरह के मुद्दे का सामना कर रहा था।

हमारे लिए हम संदर्भ है Microsoft.Data.Edm.dllऔर OData.dllऔर प्रोग्राम फ़ाइलें से अन्य विधानसभाओं:

C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                          \bin\.NETFramework\Microsoft.Data.Edm.dll

तथा

C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                        \bin\.NETFramework\Microsoft.Data.OData.dll

और संस्करण 5.6.4 था ।

एक बार जब मैंने दोनों विधानसभाओं का संदर्भ बदल दिया C:\....Project\packages\Microsoft.Data.Edm.5.6.0, तो समस्या हल हो गई


0

नगेट पैकेज मैनेजर में गया और मेरे पैकेज को अपडेट किया। अब यह काम कर रहा है। मैंने जो मुख्य अपडेट किया वह Microsoft.AspNet.WebApi.Core था। उचित संदर्भों को समेटने के लिए दोनों परियोजनाओं के साथ ऐसा करने की आवश्यकता हो सकती है।


0

यदि यह समस्या होती है, तो कृपया नीचे खंड में web.config देखें

नीचे अनुभाग विशेष रूप से प्रयुक्त dll का संस्करण देता है

web.config में इस सेक्शन को चेक करने के बाद, सोल्यूशन एक्स्प्लोरर को ओपन करें और प्रोजेक्ट ट्री से रेफरेंस चुनें जैसा कि दिखाया गया है। समाधान एक्सप्लोरर-> संदर्भ

संदर्भ का विस्तार करने के बाद, डीएल को ढूंढें जो त्रुटि का कारण बना। ऊपर दिए गए चित्र में दिखाए गए संस्करण जैसे dll संदर्भ और चेक पर राइट क्लिक करें।

यदि dll संस्करण और संदर्भित dll दोनों अलग-अलग हैं, तो आपको यह अपवाद मिलेगा। सुनिश्चित करें कि दोनों एक ही संस्करण के हैं जो मदद करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.