সিস্টেম.নেট.এইচটিটিপি: নামস্থান থেকে অনুপস্থিত? (। নেট 4.5 ব্যবহার করে)


102

টি এল; ডিআর: আমি এই ভাষায় নতুন এবং আমি কী করছি কিছুই জানেনা

এখানে এখন পর্যন্ত আমার ক্লাস:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Web;
using System.Net;
using System.IO;

public class MyClass
    {
        private const string URL = "https://sub.domain.com/objects.json?api_key=123";
        private const string data = @"{""object"":{""name"":""Title""}}";

        public static void CreateObject()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;
            StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
            requestWriter.Write(data);
            requestWriter.Close();

            try
            {
                // get the response
                WebResponse webResponse = request.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd();
                responseReader.Close();
            }
            catch (WebException we)
            {
                string webExceptionMessage = we.Message;
            }
            catch (Exception ex)
            {
                // no need to do anything special here....
            }
        }

        static void Main(string[] args)
        {
            MyClass.CreateObject();
        }
}

আমি যখন সিএসসি ফাইলনাম.সি. করি, তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

টাইপ বা নেমস্পেসের নাম 'এইচটিটিপি' নামস্থান 'সিস্টেম.নেট' তে বিদ্যমান নেই (আপনি কি কোনও সমাবেশের উল্লেখটি অনুপস্থিত?)


আপনি একটি স্থিতিশীল পদ্ধতি ( webClientক্ষেত্র) থেকে একটি অ স্থিতিশীল ক্ষেত্রে অ্যাক্সেস করার চেষ্টা করছেন । এছাড়াও, আপনি আসলে এটি কোনও কিছুর জন্য ব্যবহার করেন না। আপনি সম্ভবত এটি সরাতে পারে।
সি

উত্তর:


106

HttpClientবাস System.Net.Httpনামস্থান।

আপনাকে যুক্ত করতে হবে:

using System.Net.Http;

এবং নিশ্চিত করুন যে আপনি System.Net.Http.dll.NET 4.5 এ রেফারেন্স করছেন।


পোস্ট করা কোডটি কিছু করে বলে মনে হচ্ছে না webClient। কোডটি ব্যবহার করে আসলে সংকলন করছে তাতে কি কিছু ভুল আছে HttpWebRequest?


হালনাগাদ

রেফারেন্স যোগ করুন ডায়ালগটি খুলতে সলিউশন এক্সপ্লোরারে আপনার প্রকল্পে ডান ক্লিক করুন এবং উল্লেখ যুক্ত করুন ... নির্বাচন করুন । এটির মতো কিছু দেখতে হবে:

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


9
আমি সবেমাত্র নেট .৪.৫ ইনস্টল করেছি এবং এটি বলে যে নামস্থান স্পেসের নাম 'এইচটিটিপি' নেইমস্পেস 'সিস্টেম.নেট' তে বিদ্যমান নেই
নুলভক্সপপুলি

1
আপনি কি নিশ্চিত যে আপনার প্রকল্পটি .NET 4.5 কে টার্গেট করছে এবং আপনি এতে উল্লেখটি যুক্ত করেছেন System.Net.Http.dll?
এমব্যাবকক

3
উম ... না এটা হবে না। সলিউশন এক্সপ্লোরারে আপনার প্রকল্পে ডান ক্লিক করুন এবং Add Referencesডায়ালগটি উপস্থিত হলে ক্লিক করুন, বাম সর্বাধিক ট্যাবটি নির্বাচন করুন (আমি অন্তর্নির্মিত রেফারেন্স ডায়ালগটি ব্যবহার করি না তবে আমার নামটিকে এসেম্বলিস বলা হয় )। তালিকার স্ক্রোল না করা অবধি আপনি কোনও আইটেমটি না দেখে System.Net.Httpডাবল ক্লিক করুন এবং পুনর্নির্মাণ করুন।
এমব্যাবকক

1
অবশ্যই. এটি করার জন্য এমএসডিএন থেকে কিছু ডকুমেন্টেশন এখানে রয়েছে । আপনি যদি কোনও সমস্যায় পড়েন তবে আমাকে জানান।
এমব্যাবকক

1
আপনি একাধিক প্রকল্পের সাথে একটি সমাধানে কাজ করছেন? আপনি কি নিশ্চিত যে সিস্টেম.নেট.এইচটিপি বিধানসভাটি আপনি যে ফাইলটি দেখছেন তাতে যে প্রকল্পে ইনস্টল করা আছে? আপনি যা প্রকল্প লোড নিয়ন্ত্রন করতে পারেন যা প্যাকেজ ম্যানেজারে nuget প্যাকেজ
Haymaker87

82

নিউগেট> মাইক্রোসফ্ট.এএসপনেট.ওয়েবএপি.স্লিভ প্যাকেজ


4
এটি আমার পক্ষে সমস্যাটি বেশ সমাধান করেছে। আমি এই প্যাকেজটি ইনস্টল করেছি: nuget.org/packages/Mic Microsoft.AspNet.WebApi.SelfHost
Boinst

3
গৃহীত উত্তর (একটি রেফারেন্স যোগ করা) আমাকে সহায়তা করেনি তবে এটি করেছিল। ধন্যবাদ।
অ্যাডিনাস

1
এটি গ্রহণ করার সঠিক পদ্ধতি। কোনও ডেলকে একটি রেফারেন্স যুক্ত করা একটি বিল্ড সার্ভারে সমস্যা সৃষ্টি করতে পারে। সঠিক নুগেট প্যাকেজ থাকার ফলে সমস্যাটি সমাধান হবে।
দারথ কোডার

15

আমি কীভাবে এটি সমাধান করেছি।

  1. প্রকল্পটি (!) "বৈশিষ্ট্যগুলি" খুলুন, "অ্যাপ্লিকেশন" নির্বাচন করুন, টার্গেটিং ফ্রেমওয়ার্ক নির্বাচন করুন "। নেট ফ্রেমওয়ার্ক 4.5"
  2. আপনার প্রকল্পে ডান ক্লিক করুন -> উল্লেখ যুক্ত করুন
  3. নিশ্চিত হয়ে নিন যে "সমাবেশগুলি" -> "এক্সটেনশানগুলি" বিকল্প "সিস্টেম.নেট.এইচটিপি" চেক করা হয়নি
  4. "সমাবেশগুলি" -> "ফ্রেমওয়ার্ক" এ যান এবং "System.Net.Http" এবং "System.Net.Http" বিকল্পগুলি নির্বাচন করুন
  5. এটাই!

আমার ক্ষেত্রে আমার শুরুতে ছিল। নেট 4.0 এবং "সমাবেশগুলি" -> "এক্সটেনশানস" বিকল্পটি "সিস্টেম.নেট.এইচটিপি" সংস্করণ ২.০.০.০ সহ .0 আমার ক্রিয়াকলাপগুলির পরে "সমাবেশগুলি" -> "ফ্রেমওয়ার্ক" বিকল্পগুলি "System.Net.Http" এবং "System.Net.Http" এর একই 4.0.0.0 সংস্করণ ছিল।


এটি আমার জন্যও সমস্যা ছিল, আমি .NET 3.5 থেকে .NET 4.5
FelixJongleur42

10

ভিজ্যুয়াল স্টুডিও প্যাকেজ ম্যানেজার কনসোল> ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এএসপনেট.ওয়েবএপি.স্লায়েন্ট


5

ধরে নিই যে আপনার ভিজ্যুয়াল স্টুডিও 10 ব্যবহার করে, আপনি ভিজুয়াল স্টুডিও 10 এর জন্য সিস্টেম. নেট.এইচটিপি অন্তর্ভুক্ত এমন একটি ইনস্টল ডাউনলোড করতে পারেন: ভিএস 10 এর জন্য এমভিসি 4 ডাউনলোড করুন

এটি ইনস্টল হয়ে গেলে, ভিএস প্রকল্পের রেফারেন্স ফোল্ডারে ডান ক্লিক করুন এবং তারপরে রেফারেন্স যুক্ত করুন নির্বাচন করুন । তারপরে, ব্রাউজ ট্যাবটি নির্বাচন করুন । নেভিগেট করতে সমাহারগুলি ইনস্টল (সাধারণত প্রোগ্রাম ফাইল (এক্স 86) / মাইক্রোসফট ASP.NET/ASP.NET MVC4 / সমাহারগুলি মধ্যে) MVC4 জন্য পথ ইনস্টল নির্বাচন সমাবেশ নামে 'System.Net.Http.dll'। এখন আপনি আপনার কোডের শীর্ষে আপনার 'System.Net.Http' ব্যবহার করে যুক্ত করতে পারেন এবং এইচটিটিপি ক্লিনেন্ট সংযোগ তৈরি শুরু করতে পারেন।



3

আপনার System.Web.Httpযে HTTPClientসমাবেশটি ক্লাস রয়েছে তা সম্পর্কে আপনার একটি রেফারেন্স থাকা দরকার , আপনার ব্যবহারের চেষ্টা। আপনার শ্রেণীর ঘোষণার আগে নীচের লাইনটি যুক্ত করার চেষ্টা করুন

using System.Web.Http;

আপনি যদি এখনও ত্রুটি পান তবে এটি করার চেষ্টা করুন Visual Studio

  1. আপনার প্রকল্পের রেফারেন্স ফোল্ডারে রাইট ক্লিক করুন।
  2. রেফারেন্স যুক্ত করুন নির্বাচন করুন।
  3. .NET ট্যাব নির্বাচন করুন (বা ব্রাউজ বোতামটি নির্বাচন করুন যদি এটি। নেট ফ্রেমওয়ার্ক সমাবেশ না হয়)।
  4. ত্রুটি বার্তার ( System.Web.Http.dll) বার্তাটিতে নামস্থান সম্বলিত সমাবেশকে ডাবল ক্লিক করুন ।
  5. ঠিক আছে বোতাম টিপুন।

@ দ্য লিন্ডিহপ: আপডেট করা উত্তরের পদক্ষেপগুলি অনুসরণ করার চেষ্টা করতে পারেন?
আখিল

@Akhil - HttpClientজন্যে System.Web.Http.dll.NET 4.5 সমাবেশ (না System.Net)।
এমব্যাবকক

@ এমব্যাবকক: আমাকে জানানোর জন্য ধন্যবাদ ইভ উত্তরটি আপডেট করেছে :)
আখিল

আমি কীভাবে রেফারেন্স ফোল্ডারটি দেখাতে পারি? আমি কেবল একটি ফাইল দিয়ে শুরু করেছি: যে কোনও প্রকল্পের বাইরে = \
নুলভক্সপপুলি

ঠিক আছে, আপনার প্রকল্পে ডান ক্লিক করুন, এবং নির্বাচন করুন Properties। আপনি Referencesবাম দিকে দেখতে হবে।
আখিল



1

HTTPClient .NET 4.5 এ নতুন। আপনার সম্ভবত সম্ভবত HTTPWebRequest ব্যবহার করা উচিত ।


প্রশ্নের অন্তর্ভুক্ত কোডটি ইতিমধ্যে ব্যবহার করে HttpWebRequest, তারা কেন এটি ব্যবহার করছে না তা নিশ্চিত নয়।
এমব্যাবকক

একমত। এইচটিটিপি ক্লিনেন্ট ঘোষিত হচ্ছে, তবে কখনও ব্যবহৃত হচ্ছে না। খুব অদ্ভুত.
কিব্বি

আমি এর জন্য নেমস্পেস সহ একটি সমস্যা করছি। System.Net.Http ব্যবহার করে; ইয়েল্ডস ত্রুটিটি 'এইচটিটিপি' নামস্থান 'সিস্টেম.নেট' তে বিদ্যমান নেই
নুলভক্সপপুলি

আপনি কি। নেট 4.5 সংকলকটি ব্যবহার করছেন তা নিশ্চিত?
কিব্বি

0

সমস্যাটি সমাধান করতে :

  1. আপনার সমাধান এক্সপ্লোরার যান।
  2. প্রকল্পের নামটিতে ডান ক্লিক করুন এবং অ্যাড নির্বাচন করুন
  3. রেফারেন্স নির্বাচন করুন এবং অনুমতি দিন। Net framework 4.5লোড শেষ করতে
  4. নীচে স্ক্রোল করুন এবং নির্বাচন করুন System.Net.Httpএবং ঠিক আছে ক্লিক করুন।

সমস্যা সমাধান.


0

"স্থানীয় অনুলিপি" সম্পত্তিটি রেফারেন্সের জন্য সত্য করে তোলে এটি আমার পক্ষে হয়েছিল। রেফারেন্সগুলি প্রসারিত করুন, System.Net.Http- এ ডান ক্লিক করুন এবং বৈশিষ্ট্য উইন্ডোতে স্থানীয় সম্পত্তি অনুলিপি করে মান হিসাবে পরিবর্তন করুন। আমি VS2019 ব্যবহার করছি।


0

এটি আপনার ওয়েবকনফাইগে রেফারেন্স করা আছে তা নিশ্চিত করুন:


0

নুগেট প্যাকেজ ম্যানেজারের সাথে মাইক্রোসফ্ট.এএসপনেট.ওয়েবপিপি.কোর ইনস্টল করুন।

এর পরে:

using System.Web.Http;

অথবা আপনি যদি ভিবি ব্যবহার করেন

imports System.Web.Http


0

নেট ফ্রেমওয়ার্ক ৪.7.২ এ আপগ্রেড করার পরে আমার এই সমস্যাটি ছিল। আমি খুঁজে পেয়েছি যে System.Net.Http এর জন্য নুগেট প্যাকেজটি আর প্রস্তাবিত নয়। এখানে কর্মক্ষেত্রগুলি রয়েছে:


-1

ভিজ্যুয়াল স্টুডিওতে আপনি প্যাকেজটি লোড করতে নুগেট ব্যবহার করতে পারেন

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