System.Net.Http: ad alanında eksik mi? (.net 4.5 kullanarak)


103

TL; DR: Bu dilde yeniyim ve ne yaptığım hakkında hiçbir fikrim yok

şu ana kadarki dersim:

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 yaptığımda aşağıdaki hatayı alıyorum:

'Http' tür veya ad alanı adı 'System.Net' ad alanında mevcut değil (bir derleme başvurusu eksik mi?)


Statik olmayan bir alana statik bir yöntemden ( webClientalan) erişmeye çalışıyorsunuz . Ayrıca, onu hiçbir şey için asla kullanmazsınız. Muhtemelen kaldırabilirsin.
Cᴏʀʏ

Yanıtlar:


108

HttpClientSystem.Net.Httpad alanında yaşıyor .

Eklemeniz gerekecek:

using System.Net.Http;

Ve System.Net.Http.dll.NET 4.5'te başvurduğunuzdan emin olun .


Gönderilen kod hiçbir şey yapmıyor gibi görünüyor webClient. Gerçekte kullanarak derleyen kodda bir sorun mu var HttpWebRequest?


Güncelleme

Başvuru Ekle iletişim kutusunu açmak için Çözüm Gezgini'nde projenize sağ tıklayın ve Başvuru Ekle ... öğesini seçin . Şunun gibi görünmelidir:

görüntü açıklamasını buraya girin


9
NET
4.5'i

1
Projenizin .NET 4.5'i hedeflediğinden ve başvuruyu eklediğinizden emin misiniz System.Net.Http.dll?
M.Babcock

3
Um ... hayır olmayacak. Çözüm Gezgini'nde projenize sağ tıklayın ve Add Referencesiletişim kutusu göründüğünde tıklayın , en soldaki sekmeyi seçin ( Yerleşik referanslar iletişim kutusunu kullanmıyorum ama benimki Montajlar olarak adlandırılıyor ). System.Net.HttpÇift tıklayın ve yeniden oluşturun adlı bir öğe görene kadar listeyi kaydırın .
M.Babcock

1
Kesinlikle. İşte bunu yapmak için MSDN'den bazı belgeler. Herhangi bir sorunla karşılaşırsan bana haber ver.
M.Babcock

1
Birden çok projeyle bir çözüm üzerinde mi çalışıyorsunuz? Bakmakta olduğunuz dosyayı içeren projede System.Net.Http derlemesinin kurulu olduğundan emin misiniz? Hangi projelerin hangi nuget paketlerini yükleyeceğini Paket Yöneticisi'nde ayarlayabilirsiniz
Haymaker87

82

NuGet> Microsoft.AspNet.WebApi.Client paketi


4
Bu benim için sorunu hemen hemen çözdü. Bu paketi yükledim
2014

3
Kabul edilen cevap (bir referans eklemek) bana yardımcı olmadı ama bu yaptı. Teşekkürler.
adinas

1
Bu, alınması gereken doğru yaklaşımdır. Bir dll'ye başvuru eklemek, yapı sunucusunda sorunlara neden olabilir. Doğru nuget paketine sahip olmak sorunu çözecektir.
Darth Coder

16

Nasıl çözdüm.

  1. Proje (!) "Özellikler" i açın, "Uygulama" yı seçin, hedefleme çerçevesi seçin ".Net Framework 4.5"
  2. Projenize sağ tıklayın -> Referans ekle
  3. "Assemblies" -> "Extensions" seçeneğinde "System.Net.Http" seçeneğinin işaretli olmadığından emin olun
  4. "Assemblies" -> "Framework" seçeneğine gidin ve "System.Net.Http" ve "System.Net.Http" seçeneklerini seçin
  5. Hepsi bu!

Benim durumumun başında .Net 4.0 ve "Assemblies" -> "Extensions" seçeneği "System.Net.Http" sürüm 2.0.0.0 ile vardı. İşlemlerimden sonra "Assemblies" -> "Framework" seçenekleri "System.Net.Http" ve "System.Net.Http" aynı 4.0.0.0 sürümüne sahipti.


benim için de sorun
buydu

10

Visual Studio Paket Yöneticisi Konsolu> Kurulum Paketi Microsoft.AspNet.WebApi.Client


5

Visual Studio 10 kullandığınızı varsayarsak, Visual Studio 10 için System.Net.Http içeren bir yüklemeyi buradan indirebilirsiniz : VS10 için MVC4'ü indirin

Kurduktan sonra , VS Projesi'ndeki Referanslar klasörüne sağ tıklayın ve ardından Referans Ekle'yi seçin . Ardından, Gözat sekmesini seçin . MVC4 yüklemesi için derleme yükleme yoluna gidin (genellikle Program Dosyaları (x86) / Microsoft ASP.NET/ASP.NET MVC4 / assemblies) ve 'System.Net.Http.dll' adlı derlemeyi seçin. Artık kodunuzun üst kısmına 'using System.Net.Http'nizi ekleyebilir ve HttpClient bağlantıları oluşturmaya başlayabilirsiniz.



3

Kullanmaya çalıştığınız System.Web.Http, HTTPClientsınıfa sahip olan derlemeye bir Referansınız olması gerekir . Sınıf bildiriminizden önce aşağıdaki satırı eklemeyi deneyin

using System.Web.Http;

Hala Hata alıyorsanız, bunu yapmayı deneyin Visual Studio

  1. Projenizdeki Referanslar klasörüne sağ tıklayın.
  2. Referans Ekle'yi seçin.
  3. .NET sekmesini seçin (veya bir .NET Framework derlemesi değilse Gözat düğmesini seçin).
  4. Hata mesajında ​​( System.Web.Http.dll) ad alanını içeren derlemeye çift tıklayın .
  5. OK düğmesine basın.

@TheLindyHop: Güncellenmiş cevaptaki adımları izleyebilir misiniz?
Akhil

@Akhil - .NET 4.5 derlemesine HttpClientaittir System.Web.Http.dll(değil System.Net).
M.Babcock

@ M.Babcock: Bana haber verdiğiniz için teşekkürler. Cevabı güncelledim :)
Akhil

Referans klasörünün görünmesini nasıl sağlayabilirim? Sadece bir dosyayla başladım: herhangi bir projenin dışında = \
NullVoxPopuli

Tamam, Projenize sağ tıklayın ve seçin Properties. ReferencesSol tarafta görmelisiniz .
Akhil



1

HttpClient .net 4.5'te yenidir. Muhtemelen HttpWebRequest kullanıyor olmalısınız .


Soruya dahil edilen kod zaten kullanıyor HttpWebRequest, yine de neden kullanmadıklarından emin değil.
M.Babcock

Kabul. HTTPClient bildiriliyor, ancak asla kullanılmıyor. Çok tuhaf.
Kibbee

Ad alanını da içeren bir sorun yaşıyorum. System.Net.Http kullanarak; 'Http' hatası 'System.Net' ad alanında
bulunmuyor

.Net 4.5 derleyicisini kullandığınızdan emin misiniz?
Kibbee

0

Sorunu çözmek :

  1. Çözüm gezgininize gidin.
  2. Proje adına sağ tıklayın ve ekle'yi seçin
  3. Referansları seçin ve. Net framework 4.5yüklemeyi bitirmek için
  4. Aşağı kaydırın ve seçin System.Net.Httpve tamam'a tıklayın.

Sorun çözüldü.


0

Referans için "Yerel Kopyala" özelliğini True yapmak benim için bunu yaptı. Referanslar'ı genişletin, System.Net.Http'ye sağ tıklayın ve özellikler penceresinde Yerel Kopyala özelliğinin değerini Doğru olarak değiştirin. VS2019 kullanıyorum.


0

Web.config dosyanızda referans verildiğinden emin olun:


0

Nuget Paket Yöneticisi ile Microsoft.AspNet.WebApi.Core'u yükleyin.

Bundan sonra:

using System.Web.Http;

veya VB kullanıyorsanız

imports System.Web.Http



-1

Visual Studio'da paketi yüklemek için nuget kullanabilirsiniz

Microsoft.AspNet.WebApi.WebHost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.