System.Net.Http 4.2.0.0 এর সাথে অদ্ভুত সমস্যাটি খুঁজে পাওয়া যায় নি


108

আমার একটি অদ্ভুত সমস্যা আছে, যা আমাকে পাগল করে তোলে ...

আমার একটি সাধারণ ক্লাস লাইব্রেরী প্রকল্প রয়েছে (সম্পূর্ণ। নেট ফ্রেমওয়ার্ক, 4.6.1) কসমস ডিবি-এর কার্যকারিতার জন্য একটি র‌্যাপার ক্লাস। অতএব আমি এই প্রকল্পে "মাইক্রোসফ্ট.আজুরি.ডোকমেন্টডিবি" নিউগেট প্যাকেজ 1.19.1 যুক্ত করেছি। তা ছাড়া, আমার কাছে "নিউটনসফট.জসন" নিউগেট প্যাকেজ 10.0.3, পাশাপাশি "মাইক্রোসফ্ট.-ডায়াগনস্টিকস.এভেন্টফ্লো। *" এর কয়েকজনের কাছে একটি রেফারেন্স রয়েছে of

এখনও অবধি, কোনও ত্রুটি ছাড়াই সবকিছু সংকলন করে।

তবে আমি আমার র‍্যাপার ক্লাসটি হটানোর সাথে সাথেই - একটি সাধারণ পরিষেবা ফ্যাব্রিক স্টেটলেস পরিষেবা (সম্পূর্ণ। নেট ফ্রেমওয়ার্ক 4.6.1) থেকে গ্রহন করা - এবং নিম্নলিখিত কোডের লাইনটি কার্যকর করার চেষ্টা করুন:

_docClient = new DocumentClient(new Uri(cosmosDbEndpointUrl), cosmosDbAuthKey);

রানটাইমের সময় আমি এই অদ্ভুত ত্রুটি পেয়েছি:

System.IO.FileNotFoundException ঘটেছে HResult = 0x80070002
বার্তা = ফাইল বা সমাবেশ লোড করা যায়নি 'সিস্টেম. নেট.এইচটিপি, সংস্করণ = 4.2.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককিটোকেন = b03f5f7f11d50a3a' বা এর অন্যতম নির্ভরতা। সিস্টেম নির্দিষ্ট ফাইল খুঁজে পাচ্ছি না.
উত্স = স্ট্যাকট্রেস: মাইক্রোসফ্ট.এজুরি.ডোকিউমেন্টস.ক্লায়েন্ট। ডকুমেন্টস ক্লায়েন্ট.আইনিটিয়ালাইজ করুন (উরি 1 desiredConsistencyLevel) at Microsoft.Azure.Documents.Client.DocumentClient..ctor(Uri serviceEndpoint, String authKeyOrResourceToken, ConnectionPolicy connectionPolicy, Nullableসার্ভিস ইন্ডপয়েন্ট , কানেকশনপোলিসি কানেকশন পলিসি , নলেবল 1 কাঙ্ক্ষিত কনসিস্টেনসিভিলভ)

অন্তর্নিহিত ব্যতিক্রম 1: ফাইলনিটফাউন্ডএক্সেপশন: ফাইল বা সমাবেশ 'সিস্টেম.নেট.এইচটিপি, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককেটোকেন = b03f5f7f11d50a3a' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। সিস্টেম নির্দিষ্ট ফাইল খুঁজে পাচ্ছি না.

আমার একেবারে কোনও ধারণা নেই, কেন System.Net.Http সমাবেশটি মোটেও খুঁজে পাওয়া যায় না - এমনকি আমার ক্লাস লাইব্রেরি প্রকল্পে। নেট ফ্রেমওয়ার্ক অ্যাসেম্বলি "System.Net.Http 4.0.0.0" এর কাছে একটি সমাবেশের রেফারেন্সও রয়েছে।

আমি যা বুঝতে পারি না তা হ'ল এখানে there.২.০.০ এ পুনর্নির্দেশের এই অদ্ভুত বাঁধাই রয়েছে - সেটি কোথা থেকে আসছে? এটির কাছাকাছি যাওয়ার জন্য, আমি পরিষেবা ফ্যাব্রিক পরিষেবার (যা শ্রেণিকালীন গ্রন্থাগার গ্রাস করছে) অ্যাপ্লিকেশন কনফিগটিতে নিম্নলিখিত পুনর্নির্দেশকে যুক্ত করার চেষ্টা করেছি:

তবে তবুও কোনও তফাত নেই, রানটাইমের সময় আমি ত্রুটিটি পাই

কারও কি কোনও ক্লু লাগছে? কেউ এ জাতীয় সমস্যা দেখেছেন?

ধন্যবাদ এবং শুভেচ্ছা, অলিভারবি


3
হাই, অলিভারবি! আপনি কি এই সমস্যার জন্য একটি সমাধান খুঁজে পেয়েছেন? আমি কেবল একই পরিস্থিতির মুখোমুখি এবং এটি একটি দুঃস্বপ্ন :-(
11113399

@ হ্যান্সপ্যাস্যান্ট সেই লিঙ্কটি এখন ভেঙে গেছে
রেগেইগুইটার

উত্তর:


129

আপনি যে সমস্যার মুখোমুখি হচ্ছেন তা ভিজ্যুয়াল স্টুডিওর সাথে সম্পর্কিত, বিশেষত 2017 যা দিয়ে পাঠানো হয়েছে System.Net.Http v4.2.0.0 । যাইহোক, নুগেটের মাধ্যমে কোনও রেফারেন্স করা উচিত সেই নতুন উপায়ে গ্রহণ করা, সর্বশেষ সংস্করণ System.Net.Http4.3.3 এর মধ্যে dll সংস্করণ 4.1.1.2 রয়েছে।

সমস্যাটি হ'ল বিল্ড টাইম এবং রান টাইমেও ভিএস আপনার রেফারেন্সটিকে উপেক্ষা করবে এবং এটি যে ডিএলএল সম্পর্কে জানে তা রেফারেন্স দেওয়ার চেষ্টা করবে।

কিভাবে ঠিক হবে এটা:

  • নিশ্চিত করুন যে System.Net.Http এর কোনও রেফারেন্স নুগেটের মাধ্যমে সম্পন্ন হয়েছে
  • সময়ের ত্রুটিগুলি তৈরি করুন: System.Net.Http.dll এর এক্সটেনশন পরিবর্তন করুন (বা এটিকে অন্য কোথাও সরিয়ে দিন ... মূলত এ থেকে মুক্তি পান) যা ভিএস 2017 ( c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\) দিয়ে প্রেরণ করা হয়েছে ; যদি আপনি একটি আলাদা সংস্করণ পেয়ে থাকেন তবে পথটি কিছুটা পৃথক হবে, যদিও বেশি নয়
  • রানটাইম ত্রুটি: একটি অ্যাসেমব্লিং বাইন্ডিং পুনঃনির্দেশ যুক্ত করুন

আপনি যদি গুগলে অনলাইনে সন্ধান করেন তবে আপনি এই সম্পর্কে মাইক্রোসফ্টের সাথে কয়েকটি উন্মুক্ত সমস্যা খুঁজে পাবেন, তাই আশা করি তারা ভবিষ্যতে এটি ঠিক করে দেবে।

আশাকরি এটা সাহায্য করবে.

হালনাগাদ:

বিল্ড এজেন্টদের কাজ করার জন্য এই সমস্যাটির জন্য কিছু স্থায়ী সমাধানগুলি সন্ধান করার সময় লক্ষ্য করা গেছে যে আপনি যদি নতুন নিউগেট প্যাকেজ রেফারেন্স মডেলটিতে স্থানান্তরিত হন ( .csprojনা তবে packages.config) আরও ভাল কাজ করার ঝোঁক। এই আপগ্রেডটি কীভাবে করা যায় তার জন্য এখানে একটি গাইডের লিঙ্ক রয়েছে: https://docs.microsoft.com/en-us/nuget/references/migrate-packages-config-to-package-references


দেখে মনে হচ্ছে তারা নেট 472
পল মিলার

6
অনেক ধন্যবাদ, গত কয়েক ঘন্টা ধরে এটি সমাধান করার চেষ্টা করতে পাগল হয়ে যাচ্ছেন!
ফ্লিনকম্যান

22
কেবল একটি মাথা আপ যে আপনি .NET 4.7.2 এর সাথে কাজ করছেন যদি প্রকৃতপক্ষে বাইন্ডিংয়ের নির্দেশাবলী সরিয়ে সমস্যার সমাধান করা যেতে পারে।
অল্টারনেটেক্স

1
৪.7.২ এ আপগ্রেড করার সময় একই সমস্যা। সিস্টেম.আইও.কম্পেশন এবং সিস্টেম.রুনটাইমও প্রভাবিত হয়েছিল। বাইন্ডিং পুনঃনির্দেশগুলি সরানো সমস্যার সমাধান করে।
জেবি। মনিকার সাথে।

7
হ্যাঁ! অবশেষে! উপরের @ অলটারনেটেক্স এবং জেবি অনুসারে, 4.7.2 এর জন্য বাইন্ডিংরেডরেইক্টসগুলি সরিয়ে দিন এবং এখন সোনালি। System.Net.Http- র জন্য সর্বশেষতম গানের এবং নৃত্যের রুটিনটি খুঁজে বের করে প্রতিটি ফ্রেমওয়ার্ক আপডেটের জন্য কী বেদনাদায়ক।
টেড

76

বাঁধাই পুনঃনির্দেশ মুছে ফেলা আমার পক্ষে কাজ করেছে, আপনি এটিকে সরানোর চেষ্টা করতে পারেন:

<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />

2
এটি আমি চেষ্টা করা প্রথম
কাজগুলির

2
বাঁধাইয়ের পুনঃনির্দেশটি সরানো আমার জন্য সমস্যার সমাধান করেছে। ইউনিটের পরীক্ষাগুলি ওপির মতো একই ত্রুটির সাথে পাস করছিল না এবং এখন তারা কাজ করে work
এডু

1
এটি কি পুরো কোডলাইন? এবং ঠিক এটি যুক্ত করার দরকার নেই কোথায়? আমার অন্যান্য সমস্ত বাইন্ডিং রেডিরেক্টস ট্যাগটিতে জড়িত রয়েছেdependentAssembly
ফ্লো

1
এটি দুর্দান্ত কাজ করেছে। আমি যুক্ত করব, যদি আপনার সমাধানে একাধিক প্রকল্প থাকে তবে আপনি সেগুলির সবগুলি মূল্যায়ন করেন এবং এই পদ্ধতিটি ব্যবহার করে সমাধান করার বিষয়টি নিশ্চিত করুন।
স্কুটার

1
ধন্যবাদ. এই নিয়ে 2 দিন থেকে ইস্যুতে আটকে গেছেন। এটা কাজ করেছে !!!
সাগর খাতরী

17

@ আন্ড্রেইউ উত্তরটি ইতিমধ্যে দিয়েছে এবং কীভাবে স্থানীয়ভাবে রানটাইম ত্রুটিগুলি পুনরুত্পাদন করতে পারে তার একটি যোগ করুন।

স্থানীয়ভাবে নয়, আজুরেতে মোতায়েন করার সময় আমি নীচের রানটাইম ত্রুটি পেয়েছি।

ফাইল বা সমাবেশ 'সিস্টেম. নেট.এইচটিপি, সংস্করণ = 4.2.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = b03f5f7f11d50a3a' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। সিস্টেমটি নির্দিষ্ট করা ফাইলটি খুঁজে পাচ্ছে না। "," এক্সসেপশনটাইপ ":" সিস্টেম.আইও.ফিলনটফাউন্ডএক্সেপশন "," স্ট্যাকট্রেস ":" কোম্পানির.প্রজেক্ট.সোর্স.কম্পিয়ারআইটিগ্রেশনএপি সার্ভিস..সিটারে (উরি বেসএড্রেস)। R \ n কোম্পানিতে। .BackOffice.Web.Controllers.OrderController..ctor () সি তে: \ প্রকল্পসমূহ \ সংস্থা-প্রকল্প \ src \ Company.Project.BackOffice.Web \ কন্ট্রোলারস \ আদেশ \ আদেশকন্ট্রোলার.সি: ল্যাম্বদা_মিথডে 30 \ r \ n লাইন বন্ধ) System r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage অনুরোধ, HTTPControllerDescriptor কন্ট্রোলার ডিজাইনার, টাইপ কন্ট্রোলার টাইপ) "} at সংস্কৃতি = নিরপেক্ষ, সর্বজনীনকি টোকেন = b03f5f7f11d50a3a 'বা এর অন্যতম নির্ভরতা। সিস্টেমটি নির্দিষ্ট করা ফাইলটি খুঁজে পাচ্ছে না। "," এক্সসেপশনটাইপ ":" System.IO.FileNotFoundException ", ". স্ট্যাকট্র্যাস": "Company.Project.Service.CompanyIntegrationApiService..ctor এ (উরি বেসএড্রেস)। R Company n কোম্পানিতে \ .BackOffice.Web.Controllers.OrderController..ctor () সি তে: \ প্রকল্পগুলি \ সংস্থা-প্রকল্প \ src \ Company.Project.BackOffice.Web \ কন্ট্রোলারস \ আদেশ \ আদেশকন্ট্রোলার.সি: ল্যাম্বদা_মিথডে 30 \ r \ n লাইন বন্ধ) System r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage অনুরোধ, HTTPControllerDescriptor কন্ট্রোলার ডিজাইনার, টাইপ কন্ট্রোলার টাইপ) "} at সংস্কৃতি = নিরপেক্ষ, সর্বজনীনকি টোকেন = b03f5f7f11d50a3a 'বা এর অন্যতম নির্ভরতা। সিস্টেমটি নির্দিষ্ট করা ফাইলটি খুঁজে পাচ্ছে না। "," এক্সসেপশনটাইপ ":" System.IO.FileNotFoundException ", ". স্ট্যাকট্র্যাস": "Company.Project.Service.CompanyIntegrationApiService..ctor এ (উরি বেসএড্রেস)। R Company n কোম্পানিতে \ .BackOffice.Web.Controllers.OrderController..ctor () সি তে: \ প্রকল্পসমূহ \ সংস্থা-প্রকল্প \ src \ Company.Project.BackOffice.Web \ কন্ট্রোলারস \ আদেশ \ আদেশকন্ট্রোলার.সি: ল্যাম্বদা_মোথডে 30 \ r \ n লাইন বন্ধ) System r \ n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage অনুরোধ, HTTPControllerDescriptor কন্ট্রোলার ডিজাইনার, টাইপ কন্ট্রোলার টাইপ) "} at

আমি যখন অ্যাসেমব্লিগুলির দিকে তাকাতে শুরু করি তখন দেখতে পেলাম যে আমার ওয়েব প্রকল্প এবং পরিষেবা প্রকল্পের জন্য বিভিন্ন সংস্করণ লক্ষ্যবস্তু System.Net.Http

ওয়েব প্রকল্প:

এখানে চিত্র বর্ণনা লিখুন

পরিষেবা প্রকল্প:

এখানে চিত্র বর্ণনা লিখুন

এটি সহজেই মনে হয় যে এটি সংস্করণগুলিতে কোনও অমিলের কারণে ঘটেছিল তবে এখানে কীটিটি ত্রুটিটি দেখানো The system cannot find the file specified.

পথের সম্পত্তিটির দিকে তাকানো আমরা দেখতে পাচ্ছি যে ওয়েব প্রকল্পটি একটি নেট ফ্রেমওয়ার্ক সমাবেশকে লক্ষ্য করে যখন পরিষেবাটি ভিজ্যুয়াল স্টুডিও 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ভিজ্যুয়াল স্টুডিও নির্দিষ্ট ফোল্ডার থেকে প্রয়োজনীয়টি সরিয়ে ফেলুন । এটি আপনাকে রানটাইম ত্রুটি এবং সম্ভবত কিছু বিল্ড ত্রুটি দেবে। এগুলি স্থির হওয়ার পরে সবকিছু কাজ করা উচিত, কমপক্ষে এটি আমার জন্য হয়েছিল।

আপনি যদি সংস্করণটি দেখে কোন অ্যাসেম্বলি ব্যবহার করেন তা চেকের System.Net.Httpমাধ্যমে ইনস্টল NuGetকরেছেন .csprojSystem.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>

আপনি যদি জেনকিনস, টিমসিটি বা অ্যাপভিয়ারের মতো বিল্ড সার্ভার ব্যবহার করেন তবে রানটাইম অনুপস্থিত .dllসেখানে উপস্থিত থাকতে পারে। এই ক্ষেত্রে এটি System.Net.Http এর নুগেট সংস্করণ ব্যবহার করতে বা .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


4
<ডিপেন্ডেন্টএএসবুলেশন> <এসেম্বলআইডেন্টিটির নাম = "সিস্টেম.নেট.এইচটিটিপি" ....... যুক্ত করে আমাকে গঠন করে। ধন্যবাদ
রোমিও

আমার জন্যও! একটি workaround জন্য আপনাকে ধন্যবাদ! oldVersion = "0.0.0.0-4.2.0.0" newVersion = "4.1.1.3" যেহেতু আমি 4.1.1.3 ব্যবহার করছি
পাভেল ইয়ারমালোভিচ

4.0.০.০.০ এ পুনঃনির্দেশ হ'ল যা আমাকে শীর্ষে ফেলেছে। ধন্যবাদ!
জিম জি

এটি পুনর্নির্দেশ বিপজ্জনক! আপনার প্রকল্পের সিগন্যালে এটির নির্ভরতা রয়েছে যা এতে 4.2 ব্যবহার করে তবে আপনি এটি 4.0 ব্যবহার করতে বাধ্য করেন। এটি যদি নতুন নতুন বৈশিষ্ট্য বা পদ্ধতি প্রবর্তিত 4.0.০ ব্যবহার করে থাকে তবে আপনি সময় পূর্বাভাস দেওয়াতে একটি রানটাইম ব্যর্থতা পাবেন।
ডেভিড বার্গ

গিথুব থ্রেডের লিঙ্কটি মারা গেছে। তবে নিম্নলিখিত থ্রেডে প্রাসঙ্গিক আলোচনা রয়েছে বলে মনে হচ্ছে: github.com/dotnet/runtime/issues/24382
Hermann.Gruber

5

আমি স্রেফ System.Net.Httpনুগেট ব্যবহার করে ইনস্টল করেছি । আপনি এখানে এটি দখল করতে পারেন:

https://www.nuget.org/packages/System.Net.Http/

ASP.NET MVCপ্রকল্পের আমি লক্ষ্যমাত্রা কাজ করছি .NET 4.6.1IIS Expressভিজুয়াল স্টুডিও 2019 এর সাথে ডিবাগ করার সময় এটি আমার মেশিনে পুরোপুরি কাজ করে ।

আজুরে মোতায়েন করা অ্যাপ্লিকেশনটি চালানোর চেষ্টা করার সময় সমস্যাটি হয়েছিল। আমি এই ত্রুটিটি পাচ্ছিলাম:

ফাইল বা সমাবেশ 'সিস্টেম. নেট.এইচটিপি, সংস্করণ = 4.2.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = b03f5f7f11d50a3a' বা এর অন্যতম নির্ভরতা লোড করা যায়নি।

আমার ক্ষেত্রে যা কাজ করেছিল তা হ'ল .csproj ফাইলটি খোলার জন্য System.Net.Httpএবং নিম্নলিখিত স্ক্রিনশটে পছন্দগুলি অনুসন্ধান করা ছিল ...

এখানে চিত্র বর্ণনা লিখুন

.csprojফাইলটির সংস্করণ রয়েছে তা দেখুন 4.1.1.3:

<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">

<HintPath>আসলে পয়েন্ট ..\packagesNuget হয় যে থেকে ফোল্ডার এই বাস্তব সংস্করণ Nuget দ্বারা ইনস্টল করা হয়। একবার মোতায়েনের পরে এই নির্দিষ্ট সংস্করণটি সার্ভারের দিকেও পুনরুদ্ধার করা হবে এবং সমস্ত কিছু একটি বাঁধাই পুনঃনির্দেশের সাথে কাজ করা উচিত।

... এবং তাই বাধ্যতামূলক পুনর্নির্দেশটিরWeb.config মতো এই নির্দিষ্ট সংস্করণটির উল্লেখ করা উচিত :

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.1.1.3" />
</dependentAssembly>

আজুর কুডুতে দু'জনের প্রতিশ্রুতি দেওয়ার পরে এটি আমার ক্ষেত্রে সমস্যাটি স্থির করে । শেষ অবধি অজুরে ওয়েব সাইটটি কোনও ত্রুটি ছাড়াই শুরু হয়েছিল।


4

আমি সমস্যাটি সমাধান করার জন্য যা করেছি তা ওয়েবকনফিগ থেকে সমস্ত বাইন্ডিং সরিয়ে ফেলা হয়েছিল এবং একটি করেছে

Update-Package -reinstall

এটি পুরানো বাইন্ডিংগুলির একটি গোছা সরিয়ে দিয়েছে যা সম্ভবত সেখানে থাকার দরকার নেই এবং প্রকৃতপক্ষে একটি ভাল পরিষ্কারের কাজ করেছে।


2

আমি যখন আমাদের একটি সার্ভারে একটি ওয়েব পরিষেবা নিযুক্ত করেছি তখন আমি এই ত্রুটির মুখোমুখি হয়েছি। প্রকল্পটি লক্ষ্য করে। নেট ফ্রেমওয়ার্ক 4.7.2, যা সার্ভারে ইনস্টল করা হয়নি। সার্ভারে 4.7.2 ফ্রেমওয়ার্ক ইনস্টল করে সমস্যাটি সংশোধন করা হয়েছে।


এটি আমার সমস্যাও ছিল। এটি অন্যান্য সংস্করণগুলির জন্যও পুনরায় বিতর্কযোগ্য বিষয়।
জেসন গাইগার

2

আন্ড্রেইয়ের উত্তর আমার উদ্ধার নিয়ে যায়। যাইহোক, যুক্তি আমার মামলার সাথে মেলে না। আমার মতো একই দৃশ্যে থাকা লোকদের জন্য:

এটি একটি রানটাইম ত্রুটি ছিল (সময় তৈরির নয়), যেখানে বিল্ডটি সফল হয়েছিল তবে এটি একটি কম্পিউটারে কাজ করবে তবে সার্ভারটি নয়। সমাধান: - System.Net.Http প্যাকেজ যুক্ত হয়েছে। - ফাইলটির নাম পরিবর্তন করুন: সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ রেফারেন্স অ্যাসেমব্লিজগুলি \ মাইক্রোসফ্ট me ফ্রেমওয়ার্ক \ নেটফ্রেমওয়ার্ক \ v4.7.2 \ System.Net.Http.dll (যেমন এর নামকরণ: System.Net.Http.dll.BAK) বিল্ড সার্ভার।

আমার কাছে নেই এবং এখনও এই ডিলের জন্য সমাবেশ পুনর্নির্দেশগুলি নেই


1

একটি সহজ সমাধান আমি খুঁজে পেয়েছি যে ওয়েব প্রকল্পের জন্য লক্ষ্য কাঠামোটি 4.6 এ ডাউনগ্রেড করুন।

আমি ক্লায়েন্ট এবং ওয়েব অ্যাপ্লিকেশন তৈরি করি, ক্লায়েন্টের নেট নেট ফ্রেমওয়ার্ক ৪.7.১ এবং ওয়েব একই থাকে এবং আমি একই সমস্যার মুখোমুখি হই, যখন আমি লক্ষ্য রাখি ওয়েবের জন্য নেট ফ্রেমওয়ার্কটি এটি আমার পক্ষে কাজ করে।


1

কয়েক দিন ধরে এটির সাথে লড়াই করার পরে অবশেষে আমার প্রকল্পের জন্য। নেট 4.7.2 / সিস্টেম. নেট.এইচটিপি সমস্যাটি স্থির হয়ে গেল। ফ্রেমওয়ার্ক সংস্করণ 4.7.2 লক্ষ্য করতে * .csproj ফাইল পরিবর্তন করার সাথে সাথে আমাকে প্রকল্পগুলি থেকে অ্যাপকনফাইগও আপডেট করতে হয়েছিল

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />

প্রতি:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />

0

আমারও একই সমস্যা ছিল। শেষ পর্যন্ত আমি এটি ডিপ্লাই-ফ্যাব্রিক অ্যাপ্লিকেশন.পিএস 1 এর মতো কিছুতে পরিবর্তন করে সমাধান করেছি

$binFolder = "$LocalFolder\..\..\..\..\Bin"

$httpDllLocation = "$binFolder\System.Net.Http.dll"
$codeFolder = "$ApplicationPackagePath\[ProjectName].ServicesPkg\Code"
$configFile = "$codeFolder\[ProjectName].Services.exe.config"

Copy-Item $httpDllLocation -Destination $codeFolder 

$appConfig = [xml](cat $configFile)
$appConfig.configuration.runtime.assemblyBinding.dependentAssembly | foreach {

    $name = $_.assemblyIdentity.name
    #Write $name
    if($name -eq 'System.Net.Http')
    {
        Write 'System.Net.Http changed'

        $_.bindingRedirect.newVersion = '4.2.0.0'
    }
}
$appConfig.Save($configFile)

আমি একটি 4.2.0.0 সিস্টেম.নেট.এইচটিপি.ডিএল পেয়েছি যা x64। এই স্ক্রিপ্ট মোতায়েনের আগে প্যাকেজ ডিরেক্টরিতে dll অনুলিপি করে এবং কনফিগার ফাইলটি স্পষ্টতই এই ফাইলটি ব্যবহার করার জন্য পরিবর্তন করে। আমি আমার সিস্টেম.নিট.এইচটিপি সমস্যা সম্পর্কে একটি ব্লগার http://gertjanvanmontfoort.blogspot.nl/2017/11/systemnethttp-dll-version-problems.html এ লিখেছি

আপনার নিজের প্রকল্পের নামের সাথে [প্রকল্পের নাম] প্রতিস্থাপন করতে ভুলবেন না

আশা করি এটি সাহায্য করবে, নির্দ্বিধায় জিজ্ঞাসা করুন


0

আমার জন্য ছিল সত্যিই অদ্ভুত কিছু। সমস্যাটি কী ছিল তা খুঁজে পাওয়ার পরে ডিবাগিংয়ের কয়েক ঘন্টা দরকার। এটি স্থানীয়ভাবে ঘটেনি তবে কেবল প্রকল্পটি তৈরির জন্য জিনকিন্স ব্যবহার করার সময়।

আমার ডটনেট স্ট্যান্ডার্ট ২.০ ব্যবহার করে একটি ছোট গ্রন্থাগার ছিল এবং মূল প্রকল্পটি ডব্লিউসিএফ প্রকল্প যা সাধারণ। নেট উপর ভিত্তি করে তৈরি হয়েছিল (খনিটি বিশেষত v4.6.1)। তবে ডটনেট স্ট্যান্ডার্ট লাইব্রেরির স্টার্টআপ ক্লাসে আমার কাছে এমন কিছু কোড ছিল যা দেখে মনে হয়েছিল:

public static class CoreModule
{
    public static IServiceCollection AddStaticDataConfiguration(
        this IServiceCollection services, Func<IServiceProvider, IStaticDataConfiguration>  staticDataConfiguration) 
    {  
        services.TryAddSingleton(staticDataConfiguration);
        services.TryAddSingleton<Func<HttpClient>>(x =>
        {
            var configuration = staticDataConfiguration(x);

            return configuration.ClientResolver ?? (() => new HttpClient());
        });
        return services;
    }
}

আইএসট্যাটিক ডেটা কনফিগারেশন ইন্টারফেস নীচের মত দেখাচ্ছে:

public interface IStaticDataConfiguration
{
    //..... some stuff

    Func<HttpClient> ClientResolver { get; set; }
}  

এই ইন্টারফেসটি ডটনেট স্ট্যান্ডার্ট লাইব্রেরির অভ্যন্তরে থাকে যখন বাস্তবায়নটি এর বাইরে থাকে (এটি ডাব্লুসিএফ প্রকল্পে অবস্থিত)।

লাইব্রেরির বাইরে থেকে আমি AddStaticDataConfigurationনীচের মতো পদ্ধতিটি কল করছিলাম :

serviceCollection.AddStaticDataConfiguration(p =>
{
    var staticDataConfig = p.GetService<IStaticDataConfiguration>();
    return new StaticDataProviderConfiguration
    {
        //...some other stuff
        ClientResolver = () => restRequestFactory.GetInstrumentedClient("StaticDataService") //this returns an HttpClient
    };
});

সমস্যাটি হ'ল আমি Func<HttpClient>একটি সাধারণ। নেট প্রকল্প থেকে একটি ডটনেট স্ট্যান্ডার্ড লাইব্রেরিতে যাচ্ছি যা কিছু পাগল কারণে ডটনেট স্ট্যান্ডার্ড পছন্দ করে না এবং সম্ভবত এটি HttpClientবিভিন্ন ক্লাস থেকে আসছে বলে মনে করে ফলস্বরূপ System.Net.Http 4.x.x.xব্যতিক্রম পাওয়া যায়নি। যখন HttpClientকোনও স্বাভাবিক। নেট প্রকল্প থেকে কোনও গ্রহণ না করার জন্য কোডটি সরিয়ে ফেলা হয় তবে funcলাইব্রেরির ভিতরে একটি নতুন তৈরি করা নিজেই এর খুশি এবং কাজ করে। আশা করি যে এটি অন্য কারওকে সহায়তা করবে যেহেতু এই ত্রুটিটি অনেক কারণে ঘটছে :)


0

আমার সমাধান @ রাকিবের মতো ছিল। আমার প্রকল্পটি ছিল 4.7.2 এবং আমার পিসিতে ঠিক কাজ করেছিল। আমি যখনই আমাদের ডেভ সার্ভারে স্থাপন করেছি তখনই আমি প্রশ্নের মধ্যে উল্লিখিত সমস্যাটি পেয়ে যাব। সার্ভারে সর্বাধিক। নেট সংস্করণটি দেখা গেল 4.6.1। আমার প্রকল্পটি 4.6.1 এ ডাউনগ্রেড করা সমস্যার সমাধান করেছে। সার্ভারের। নেট সংস্করণটি আপগ্রেড করা আমার পক্ষে কোনও বিকল্প ছিল না।


0

আমি বিশ্বাস করি যে উত্তরটির কিছু অংশ মাইক্রোসফ্টের ডকুমেন্টেশনে পাওয়া যাবে ।

আপনি যখন ভিজ্যুয়াল স্টুডিওতে একটি ডেস্কটপ অ্যাপ তৈরি করেন যা। নেট ফ্রেমওয়ার্ক ৪.৫.১ বা তার পরবর্তী সংস্করণকে লক্ষ্য করে, অ্যাপটি স্বয়ংক্রিয়ভাবে বাইন্ডিং পুনঃনির্দেশ ব্যবহার করে।

@ বিবেক শর্মার উত্তরটি মুছে ফেলা হিসাবে:

<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />

আমার অ্যাপ্লিকেশনটিতে এই জাতীয় 3 টি ক্ষেত্রে সমস্যার সমাধান হয়েছে। আপনি যখন পাওয়ারশেলের সাথে ডিএলএল পরীক্ষা করেন, উদাহরণস্বরূপ:

 ([system.reflection.assembly]::loadfile("C:\MyApp\bin\System.Net.Sockets.dll")).FullName

আউটপুট

সিস্টেম.নেট.সকেটস, সংস্করণ = 4.0.0.0

স্পষ্টতই একটি বাধ্যতামূলক পুনর্নির্দেশ 4.2.0.0কাজ করবে না কারণ আমরা বিনটিতে আউটপুট আছি 4.0.0.0

জিএসি পরীক্ষা করে দেখার বিষয় এটিও আছে যে সেখান থেকে অ্যাসেম্বলিটিও অনুপস্থিত রয়েছে কি না:

 gacutil -l System.Net.Sockets

আমার ক্ষেত্রে বিশেষ সংস্করণটিও জিএসি থেকে অনুপস্থিত ছিল। যদি ডিএলএল জিএসি তে থাকত তবে এটি বিধানসভা বাঁধন প্রক্রিয়াতে পাওয়া উচিত ছিল ।


-2

প্রথমে আপনার স্থানীয় ফাইল সিস্টেম থেকে মুছুন:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Syste.Net.Http.dll

তারপরে প্রকল্পগুলিতে সমস্ত রেফারেন্স সরান এবং, 4.0 রেফারেন্স যুক্ত করুন।
এটি আমার কাছে আমার সমস্যা সমাধান করেছে।


3
ওহ আমার না, দয়া করে এর কিছু ফাইল মুছে ফেলে আপনার ভিএস-এর ইনস্টলেশনটিকে দূষিত করবেন না।
ডেভিড বার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.