@AndreiU पहले से ही दिए गए उत्तर के अलावा और स्थानीय स्तर पर रनटाइम त्रुटियों को कैसे पुन: पेश करें।
मुझे एज़्योर को तैनात करते समय नीचे रनटाइम त्रुटि मिली, स्थानीय रूप से नहीं।
फ़ाइल या असेंबली को लोड नहीं किया जा सका 'System.Net.Http, संस्करण = 4.2.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a' या इसकी एक निर्भरता। सिस्टम फ़ाइल निर्दिष्ट नहीं कर सकता। "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" Company.Project.Service.CompanyIntegrationApiS..ctor (Uri baseAddress) \ r \ n में Company.Project पर। .BackOffice.Web.Controllers.OrderController..ctor () C में: \ प्रोजेक्ट \ कंपनी-प्रोजेक्ट \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ Order \ontontroller.cs: लाइन 30 \ r \ n lambda_method पर () सिस्टम पर बंद करें। \ r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage अनुरोध, HttpControllerDescripter नियंत्रक डेसिस्क्रिप्ट, टाइप कंट्रोलर) "}} संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a 'या इसकी निर्भरता में से एक। सिस्टम फ़ाइल निर्दिष्ट नहीं कर सकता। "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" Company.Project.Service.CompanyIntegrationApiS..ctor (Uri baseAddress) \ r \ n में Company.Project पर। .BackOffice.Web.Controllers.OrderController..ctor () C में: \ प्रोजेक्ट \ कंपनी-प्रोजेक्ट \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ Order \ontontroller.cs: लाइन 30 \ r \ n lambda_method पर () सिस्टम पर बंद करें। \ r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage अनुरोध, HttpControllerDescripter नियंत्रक डेसिस्क्रिप्ट, टाइप कंट्रोलर) "}} संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a 'या इसकी निर्भरता में से एक। सिस्टम फ़ाइल निर्दिष्ट नहीं कर सकता। "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" Company.Project.Service.CompanyIntegrationApiS..ctor (Uri baseAddress) \ r \ n में Company.Project पर। .BackOffice.Web.Controllers.OrderController..ctor () C में: \ प्रोजेक्ट \ कंपनी-प्रोजेक्ट \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ Order \ontontroller.cs: लाइन 30 \ r \ n lambda_method पर () सिस्टम पर बंद करें। \ r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage अनुरोध, HttpControllerDescripter नियंत्रक डेसिस्क्रिप्ट, टाइप कंट्रोलर) "}}
जब मैंने विधानसभाओं को देखना शुरू किया तो मैं देख सकता था कि मेरी वेब परियोजना और सेवा परियोजना ने विभिन्न संस्करणों को लक्षित किया है System.Net.Http
।
वेब परियोजना:
सेवा परियोजना:
यह सोचना आसान है कि यह संस्करणों में एक बेमेल के कारण होता है, लेकिन यहां कुंजी त्रुटि को देखने के लिए है The system cannot find the file specified.
।
पथ प्रॉपर्टी को देखते हुए हम देख सकते हैं कि वेब प्रोजेक्ट एक .Net फ्रेमवर्क असेंबली को लक्षित करता है जबकि सेवा विज़ुअल स्टूडियो 2017 से असेंबली को लक्षित करती है। चूंकि सर्वर में विजुअल स्टूडियो 2017 स्थापित नहीं है, इसलिए रनटाइम त्रुटि होगी।
वेब पथ:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Net.Http.dll
सेवा पथ:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll
की स्थापना के रूप में सरल रूप में कुछ Copy Local
करने के लिए true
सभी मामलों में इस समस्या को ठीक कर सकते हैं, फिर भी नहीं।
अपने स्थानीय मशीन पर त्रुटि को पुन: उत्पन्न करने के लिए, केवल System.Net.Http.dll
Visual Studio विशिष्ट फ़ोल्डर से आवश्यक निकालें । यह आपको रनटाइम एरर देगा और शायद कुछ बिल्ड एरर भी। ये तय होने के बाद कि सब कुछ काम करना चाहिए, कम से कम यह मेरे लिए था।
यदि आपने चेक के System.Net.Http
माध्यम से स्थापित NuGet
किया है कि .csproj
संस्करण को देखकर किस विधानसभा का उपयोग किया जाता है । System.Net.Http 4.3.4
उदाहरण के लिए निम्नलिखित विधानसभा देता है:
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
यदि आप Jenkins, TeamCity या AppVeyor जैसे बिल्ड सर्वर का उपयोग करते हैं तो रनटाइम लापता .dll
भी वहां मौजूद हो सकता है। इस स्थिति में यह System.Net.Http के NuGet संस्करण का उपयोग करने में मदद नहीं कर सकता है या .dll
स्थानीय रूप से लापता को हटा सकता है । इस त्रुटि को हल करने के लिए उस संस्करण को देखें जो विशिष्ट नहीं है और विशिष्ट है PublicKeyToken
। उसके बाद Web.config
या तो App.config
अपनी परियोजना के आधार पर या तो एक बाध्यकारी रीडायरेक्ट बनाएं । मेरे मामले में मैं इसके बजाय 4.0.0.0 का उपयोग करना चाहूंगा:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
इस मुद्दे के बारे में एक अच्छा गितुब सूत्र:
https://github.com/dotnet/corefx/issues/22781