এইচটিপিপ্লিনেন্ট পোস্টএএসজসনসাইক পদ্ধতি সি # সমর্থন করছে না


255

আমি আমার ওয়েব অ্যাপ্লিকেশন থেকে একটি ওয়েব এপিআই কল করার চেষ্টা করছি। আমি। নেট 4.5 ব্যবহার করছি এবং কোডটি লেখার সময় আমি ত্রুটিটি পাচ্ছি যে HttpClientকোনও সংজ্ঞা PostAsJsonAsyncপদ্ধতি ধারণ করে না ।

নীচে কোডটি দেওয়া হল:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
   new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;

var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

এবং আমি ত্রুটি বার্তা পাচ্ছি:

ত্রুটি: 'System.Net.Http.HttpClient' তে 'PostAsJsonAsync' এর সংজ্ঞা নেই এবং কোনও এক্সটেনশন পদ্ধতি 'PostAsJsonAsync' টাইপ করার আগে 'System.Net.Http.HttpClient' টাইপের প্রথম যুক্তি পাওয়া যায়নি (আপনি কি অনুপস্থিত নির্দেশনা বা একটি সমাবেশ রেফারেন্স ব্যবহার করছেন?)

দয়া করে আমাকে দেখুন এবং পরামর্শ দিন।


13
সেরা বিকল্প হ'ল 'মাইক্রোসফ্ট.এএসপনেট.উইবএপিআই.ক্লায়েন্ট' যোগ করুন প্যাকেজটি u এটাই!
শচীন পাওয়ার

উত্তর:


435

হ্যাঁ, আপনার একটি উল্লেখ যুক্ত করা দরকার to

System.Net.Http.Formatting.dll

এটি এক্সটেনশন অ্যাসেমব্লিজগুলি অঞ্চলে পাওয়া যাবে।

এটি অর্জনের একটি ভাল উপায় হ'ল আপনার প্রকল্পে নিউগেট প্যাকেজ যুক্তMicrosoft.AspNet.WebApi.Client করা।


7
এখন আমি একটি ত্রুটি পাচ্ছি: "ফাইল বা সমাবেশ লোড করা যায়নি 'Newtonsoft.Json, সংস্করণ = 4.5.0.0 সংস্কৃতি = নিরপেক্ষ PublicKeyToken = 30ad4fe6b2a6aeed' বা তার নির্ভরতা এক সিস্টেম নির্দিষ্ট ফাইল খুঁজে পাচ্ছি না।"।
Jidheesh রাজন

89
পাওয়া গেছে যে আমার প্রকল্পে "System.Net.Http" এর .NET ফ্রেমওয়ার্ক সংস্করণটির সাথে কাজ করে, বিন্যাসের সংস্করণটি নিশ্চিত করার জন্য আমাকে নুগেট প্যাকেজ "মাইক্রোসফ্ট.এএসপ নেট.ওয়েবপিপি.ক্লায়েন্ট" যুক্ত করতে হয়েছিল।
টড এইচ।

27
কোনও স্ট্যান্ডার্ড সিস্টেম অ্যাসেমব্লিকে রেফারেন্স দেওয়ার জন্য কেন এটি কাজ করতে পেতে ইন্টারনেটে এলোমেলো অবস্থানগুলি থেকে ওপেন সোর্স স্টাফ ডাউনলোড করা প্রয়োজন? এটি যদি এর নির্ভরতাগুলি সমাধান করতে না পারে তবে কেন এটি সংকলন করে? এটি আমার শেষ নেই!
নিউট্রিনো

4
@ নিউট্রিনো আপনি কি কোডটি নিজেরাই লিখবেন? আপনার কৃতজ্ঞ হওয়া উচিত যে মাইক্রোসফ্ট এবং অন্য কোথাও লোকেদের লিখিত কোড রয়েছে যা আপনি
নিখরচায়

4
প্রধানমন্ত্রী> ইনস্টল-প্যাকেজ সিস্টেম. নেট.এইচটিটিপি. ফর্ম্যাটিং.এক্সটেনশন
ইয়ার

193

PostAsJsonAsyncSystem.Net.Http.dll(.NET 4.5.2) এ আর নেই । আপনি এতে একটি উল্লেখ যুক্ত করতে পারেন System.Net.Http.Formatting.dllতবে এটি আসলে পুরানো সংস্করণের অন্তর্ভুক্ত। আমাদের টিমসিটি বিল্ড সার্ভারে আমি এটি নিয়ে সমস্যায় পড়েছি, এই দুজন একসাথে সহযোগিতা করবে না।

বিকল্পভাবে, আপনি PostAsJsonAsyncএকটি PostAsyncকল দিয়ে প্রতিস্থাপন করতে পারেন , যা কেবল নতুন ডেলির একটি অংশ। প্রতিস্থাপন করা

var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

সঙ্গে:

var response = client.PostAsync("api/AgentCollection", new StringContent(
   new JavaScriptSerializer().Serialize(user), Encoding.UTF8, "application/json")).Result;

লক্ষ্য করুন JavaScriptSerializerনামস্থান রয়েছে: System.Web.Script.Serialization

আপনার সিএসপিজে আপনাকে একটি সমাবেশের রেফারেন্স যুক্ত করতে হবে: System.Web.Extensions.dll

Https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836 দেখুন


7
এই উত্তর হওয়া উচিত। কিছু করার সর্বোত্তম উপায় হ'ল এটির সঠিক উপায়
আলিরেজা

4
এটি এখন পর্যন্ত সেরা উত্তর। নিউগেট প্যাকেজ বা ডিএলস যুক্ত করার চেষ্টা করবেন না।
Ghankhan Kurt

3
পুরোপুরি সেরা উত্তর। নির্বাচিত উত্তর মোটেও সেরা অনুশীলন নয় , আসলে মাইক্রোসফ্ট
ডিএলএলগুলি

4
বিষয় ছাড়াই, তবে আমি এটি যাইহোক উল্লেখ করতে চাই: await FooAsync()পরিবর্তে ব্যবহার করুন FooAsync().Result। দ্বিতীয়টি অচল করে দিতে পারে can দেখুন stackoverflow.com/q/17248680/2272514 এবং তার গৃহীত উত্তর। বিশদ সম্পর্কে ভাল লিঙ্ক আছে।
থমাস স্ক্রেটার

2
"অ্যাপ্লিকেশন / JSON" এর পরিবর্তে একটি টাইপ ব্যবহার করার জন্য আপনাকে MediaTypeNames.Application.Json ব্যবহার করতে পারে docs.microsoft.com/en-us/dotnet/api/...
daviesdoesit

163

অনুপস্থিত রেফারেন্সটি হ'ল System.Net.Http.Formatting.dll। তবে এর চেয়ে ভাল সমাধানটি হ'ল আমার প্রকল্পের Microsoft.AspNet.WebApi.Client.NET ফ্রেমওয়ার্ক সংস্করণটির সাথে কাজ করে ফর্ম্যাট করার ডিএল এর সংস্করণটি নিশ্চিত করতে নিউগেট প্যাকেজ যুক্ত করা System.Net.Http


1
@ ইউভাল - আমি বুঝতে পেরেছি যে "সমাধান" আমার প্রস্তাবিত একটি মন্তব্যের মতো শোনাচ্ছে। দেখা যাচ্ছে যে আন্দ্রেও আমার প্রস্তাবিত নুগেট প্যাকেজটি রচনা করেছিল।
টড এইচ।

এই ছিল আমার উত্তর! (আমার প্রশ্নের কাছে)
জেননডি

34

ইতিমধ্যে বিতর্কিত হিসাবে, নেট .৪.৪.২ থেকে এই পদ্ধতিটি আর উপলভ্য নয়। জেরোইন কে এর উত্তরে প্রসারিত করতে আপনি একটি এক্সটেনশন পদ্ধতি তৈরি করতে পারেন:

public static async Task<HttpResponseMessage> PostAsJsonAsync<TModel>(this HttpClient client, string requestUrl, TModel model)
{
    var serializer = new JavaScriptSerializer();
    var json = serializer.Serialize(model);
    var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
    return await client.PostAsync(requestUrl, stringContent);
}

এখন আপনি কল করতে পারবেন client.PostAsJsonAsync("api/AgentCollection", user)


12

আমার সমস্যাটি এমন একটি প্রকল্পেও ছিল আমি উত্স নিয়ন্ত্রণ থেকে সন্ধান করেছিলাম out

উপসর্গটি ছিল উপরে বর্ণিত ত্রুটি এবং এর উল্লেখে হলুদ সতর্কতা ত্রিভুজ System.Net.Http.Formatting

এটি ঠিক করতে, আমি ভাঙা রেফারেন্সটি সরিয়েছি এবং এরপরে সর্বশেষতম সংস্করণ ইনস্টল করতে নুগেট ব্যবহার করেছি Microsoft.AspNet.WebApi.Client


2
এটি কাজ করে! নুগেট কনসোল দ্বারা ইনস্টল করতে প্রবেশ করুনInstall-Package Microsoft.AspNet.WebApi.Client
ইয়ং জিয়ান

4

আমি জানি এই উত্তরটি খুব দেরী হয়েছে, আমারও একই সমস্যা ছিল এবং আমি System.Net.Http.Formatting.Extensionনুগেট যুক্ত করছিলাম, এখানে এবং সেখানে যাচাই করার পরে আমি দেখতে পেলাম যে নুগেট System.Net.Http.Formatting.dllযুক্ত হয়েছে তবে রেফারেন্সগুলিতে যোগ করা হয়নি, আমি কেবল নুগেটটি পুনরায় ইনস্টল করেছি



2

সাধারণ কল করার জন্য এই পরিমাণের কোডটি লেখার পরিবর্তে, আপনি ইন্টারনেটে উপলভ্য একটি র‍্যাপার ব্যবহার করতে পারেন।

আমি ওয়েবএপিপ্লেইন্ট নামে একটি লিখেছি, নুগেটে উপলভ্য ... এটি পরীক্ষা করে দেখুন!

https://www.nuget.org/packages/WebApiRestService.WebApiClient/


@ অ্যান্ড্রিও লিঙ্কটি ( ওয়েবপিক্লিয়েন্ট.এজুরি ওয়েবেসসাইটস ) এখন 30-নভেম্বর-2017-র হিসাবে ভেঙে গেছে। নিউগেট ওয়ার্কিং লিঙ্কটি হ'ল nuget.org/packages/WebApiRestService.WebApiClient
বিশ্বজিৎ জি

দুর্ভাগ্যক্রমে মাইক্রোসফ্ট আমার
অ্যাজর

2

আপনি যদি ব্লেজারের চারপাশে খেলছেন এবং ত্রুটিটি পান তবে আপনার প্যাকেজটি যুক্ত করা দরকার Microsoft.AspNetCore.Blazor.HttpClient


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