System.Net.Http: नेमस्पेस से गायब है? (.net 4.5 का उपयोग करके)


103

टी एल; DR: मैं इस भाषा में नया हूँ और मुझे पता नहीं है कि मैं क्या कर रहा हूँ

यहाँ मेरी कक्षा अभी तक है:

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();
        }
}

जब मैं csc filename.cs करता हूं, मुझे निम्न त्रुटि मिलती है:

प्रकार या नाम स्थान का नाम 'Http' नामस्थान 'System.Net' में मौजूद नहीं है (क्या आप असेंबली संदर्भ खोज रहे हैं?)


आप एक स्थिर विधि ( webClientफ़ील्ड) से एक गैर-स्थिर फ़ील्ड तक पहुँचने का प्रयास कर रहे हैं । इसके अलावा, आप वास्तव में इसे किसी भी चीज़ के लिए उपयोग नहीं करते हैं। आप शायद इसे हटा सकते हैं।
C

जवाबों:


107

HttpClientSystem.Net.Httpनामस्थान में रहता है ।

आपको जोड़ना होगा:

using System.Net.Http;

और सुनिश्चित करें कि आप System.Net.Http.dll.NET 4.5 में संदर्भित कर रहे हैं ।


पोस्ट किया गया कोड कुछ भी करने के लिए प्रकट नहीं होता है webClient। क्या कोड के साथ कुछ गड़बड़ है जो वास्तव में उपयोग कर रहा है HttpWebRequest?


अपडेट करें

खोलने के लिए संदर्भ जोड़ें संवाद में अपनी परियोजना पर राइट क्लिक करें समाधान एक्सप्लोरर और चयन संदर्भ जोड़ें ... । यह कुछ इस तरह दिखना चाहिए:

यहां छवि विवरण दर्ज करें


9
मैंने अभी .NET 4.5 स्थापित किया है, और यह नामस्थान नाम 'Http' नामस्थान 'System.Net' में मौजूद नहीं है
NullVoxPopuli

1
क्या आप सुनिश्चित हैं कि आपकी परियोजना .NET 4.5 को लक्षित कर रही है और आपने संदर्भ को जोड़ दिया है System.Net.Http.dll?
M.Babcock

3
उम ... नहीं, यह नहीं होगा। सॉल्यूशन एक्सप्लोरर में अपने प्रोजेक्ट पर राइट क्लिक करें और Add Referencesजब डायलॉग दिखे तो क्लिक करें, लेफ्ट मोस्ट टैब को सेलेक्ट करें (मैं बिल्ट-इन रेफरेंस डायलॉग का इस्तेमाल नहीं करता लेकिन मेरा असेंबली कहा जाता है )। सूची को तब तक स्क्रॉल करें जब तक कि आपको कोई आइटम न दिखाई दे, उसे System.Net.Httpडबल-क्लिक करें और पुनर्निर्माण करें।
एम। बैबॉक

1
निश्चित रूप से। इसे करने के लिए MSDN से कुछ दस्तावेज यहां दिए गए हैं । अगर आप किसी परेशानी में भागते हैं तो मुझे बताएं।
M.Babcock

1
आप कई परियोजनाओं के साथ एक समाधान में काम कर रहे हैं? क्या आप सुनिश्चित हैं कि System.Net.Http असेंबली उस प्रोजेक्ट में स्थापित है जिसमें वह फ़ाइल है जिसमें आप देख रहे हैं? आप समायोजित कर सकते हैं कि कौन से प्रोजेक्ट लोड करते हैं जो पैकेज मैनेजर में पैकेज खोदता है
Haymaker87

82

NuGet> Microsoft.AspNet.WebApi.Client पैकेज


4
यह मेरे लिए बहुत समस्या का हल है। मैंने यह पैकेज स्थापित किया है: nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2
Boinst

3
स्वीकृत उत्तर (एक संदर्भ जोड़कर) ने मेरी मदद नहीं की लेकिन यह किया। धन्यवाद।
एडिनस

1
यह लेने का सही तरीका है। एक dll के संदर्भ को जोड़ने से बिल्ड सर्वर पर समस्याएँ उत्पन्न हो सकती हैं। सही नगेट पैकेज होने से समस्या हल हो जाएगी।
डार्थ कोडर

15

मैंने इसे कैसे हल किया।

  1. ओपन प्रोजेक्ट (!) "प्रॉपर्टीज", "एप्लिकेशन" चुनें, टार्गेटिंग फ्रेमवर्क चुनें ".नेट फ्रेमवर्क 4.5"
  2. अपने प्रोजेक्ट पर राइट क्लिक करें -> संदर्भ जोड़ें
  3. सुनिश्चित करें कि "असेंबली" में -> "एक्सटेंशन" विकल्प "System.Net.Http" अनियंत्रित है
  4. "असेंबली" -> "फ्रेमवर्क" पर जाएं और "System.Net.Http" और "System.Net.Http" विकल्प चुनें
  5. वह `सब!

मेरे मामले में मेरे पास शुरुआत में .Net 4.0 और "असेंबलीज़" -> संस्करण 2.0.0.0 के साथ "एक्सटेंशन" विकल्प "System.Net.Http" था। मेरे कार्यों के बाद "असेंबली" -> "फ्रेमवर्क" विकल्प "System.Net.Http" और "System.Net.Http" का समान 4.0.0.0 संस्करण था।


मेरे लिए भी यही समस्या थी, यह संदर्भ "System.Net.Http" नहीं दिखा रहा था, जब तक कि मैं .NET 3.5 से .NET 4.5 में अपग्रेड नहीं हो गया
FelixJongleur42

10

Visual Studio पैकेज मैनेजर कंसोल> इंस्टॉल-पैकेज Microsoft.AspNet.WebApi.Client


5

यह मानते हुए कि आपके विज़ुअल स्टूडियो 10 का उपयोग करते हुए, आप एक इंस्टॉल डाउनलोड कर सकते हैं, जिसमें System.Net.Http शामिल है, विज़ुअल स्टूडियो 10 के लिए यहाँ: VS10 के लिए MVC4 डाउनलोड करें

इसे स्थापित करने के बाद, वीएस प्रोजेक्ट में संदर्भ फ़ोल्डर पर राइट क्लिक करें और फिर संदर्भ जोड़ें का चयन करें । उसके बाद, ब्राउज़ टैब चुनें। असेंबलियों पर नेविगेट करें MVC4 इंस्टॉल (आमतौर पर प्रोग्राम फाइल्स (x86) / Microsoft ASP.NET/ASP.NET MVC4 / असेंबलियों) के लिए पथ स्थापित करें और 'System.Net.Http.dll' नाम की असेंबली का चयन करें। अब आप अपने कोड के शीर्ष पर अपने 'using System.Net.Http' को जोड़ सकते हैं और HttpClient कनेक्शन बनाना शुरू कर सकते हैं।



3

आपको उस System.Web.Httpविधानसभा का संदर्भ देना होगा जिसमें HTTPClientवर्ग है, आपका उपयोग करने की कोशिश कर रहा है। अपनी कक्षा की घोषणा से पहले नीचे की पंक्ति को जोड़ने का प्रयास करें

using System.Web.Http;

यदि आपको अभी भी त्रुटि मिलती है, तो ऐसा करने का प्रयास करें Visual Studio

  1. अपनी परियोजना पर संदर्भ फ़ोल्डर पर राइट क्लिक करें।
  2. संदर्भ जोड़ें का चयन करें।
  3. .NET टैब का चयन करें (या यदि यह .NET फ्रेमवर्क असेंबली नहीं है तो ब्राउज बटन का चयन करें)।
  4. त्रुटि संदेश ( System.Web.Http.dll) में नाम स्थान वाली असेंबली को डबल-क्लिक करें ।
  5. ओके बटन दबाएं।

@ TheLindyHop: क्या आप अपडेट किए गए उत्तर में दिए चरणों का पालन कर सकते हैं?
अखिल

@ अखिल - .NET 4.5 असेंबली (नहीं ) के HttpClientअंतर्गत आता है । System.Web.Http.dllSystem.Net
M.Babcock

@ M.Babcock: मुझे बताने के लिए धन्यवाद। Ive ने उत्तर :)
अखिल

मुझे दिखाने के लिए संदर्भ फ़ोल्डर कैसे मिलेगा? मैंने सिर्फ एक फ़ाइल के साथ शुरू किया है: किसी भी परियोजना के बाहर = \
NullVoxPopuli

ठीक है, अपने प्रोजेक्ट पर राइट क्लिक करें, और चुनें Properties। आपको Referencesबायीं ओर देखना चाहिए ।
अखिल



1

HttpClient .net 4.5 में नया है। आपको शायद HttpWebRequest का उपयोग करना चाहिए ।


प्रश्न में शामिल कोड पहले से ही उपयोग करता है HttpWebRequest, यह सुनिश्चित नहीं है कि वे इसका उपयोग क्यों नहीं कर रहे हैं।
एम। बैबॉक

माना। HTTPClient घोषित किया जा रहा है, लेकिन इसका उपयोग कभी नहीं किया जा रहा है। बहुत अजीब।
किबी

मैं इसके लिए नाम स्थान सहित एक समस्या हूँ। System.Net.Http का उपयोग कर; त्रुटि 'Http' के नामस्थान 'System.Net' में मौजूद नहीं है
NullVoxPopuli

क्या आप वाकई .Net 4.5 कंपाइलर का उपयोग कर रहे हैं?
किबी

0

इस समस्या को हल करने के लिए :

  1. अपने सॉल्यूशन एक्सप्लोरर पर जाएं।
  2. प्रोजेक्ट के नाम पर राइट क्लिक करें और ऐड चुनें
  3. संदर्भ चुनें और अनुमति दें। Net framework 4.5लोडिंग पूरा करने के लिए
  4. नीचे स्क्रॉल करें और चुनें System.Net.Httpऔर ठीक पर क्लिक करें।

समस्या सुलझ गयी।


0

"स्थानीय कॉपी करें" संपत्ति को संदर्भ के लिए सही बनाते हुए मेरे लिए यह किया। विस्तृत करें संदर्भ, System.Net.Http पर राइट-क्लिक करें और गुण विंडो में True पर प्रतिलिपि स्थानीय संपत्ति के मूल्य को बदलें। मैं VS2019 का उपयोग कर रहा हूं।


0

सुनिश्चित करें कि यह आपके web.config में संदर्भित है:


0

Nuget पैकेज मैनेजर के साथ Microsoft.AspNet.WebApi.Core स्थापित करें।

इसके बाद:

using System.Web.Http;

या यदि आप वीबी का उपयोग करते हैं

imports System.Web.Http


0

.NET फ्रेमवर्क 4.7.2 में अपग्रेड करने के बाद मेरे पास यह समस्या थी। मुझे पता चला कि System.Net.ttp के लिए Nuget पैकेज की अब सिफारिश नहीं की गई है। यहाँ वर्कअराउंड हैं:


-1

Visual Studio में आप पैकेज को लोड करने के लिए nuget का उपयोग कर सकते हैं

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