System.Net.Http : 네임 스페이스에서 누락 되었습니까? (.net 4.5 사용)


103

TL; 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ᴏʀʏ 2012 년

답변:


107

HttpClient에 살고 System.Net.Http네임 스페이스.

다음을 추가해야합니다.

using System.Net.Http;

System.Net.Http.dll.NET 4.5에서 참조하고 있는지 확인하십시오 .


게시 된 코드는 webClient. 실제로 사용하여 컴파일하는 코드에 문제가 HttpWebRequest있습니까?


최신 정보

참조 추가 대화 상자 를 열려면 솔루션 탐색기 에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 참조 추가 ...를 선택 합니다. 다음과 같이 보일 것입니다.

여기에 이미지 설명 입력


9
난 그냥 .NET 4.5을 설치하고, 네임 스페이스 이름이 네임 스페이스 'System.Net'에서 'HTTP를'을 존재하지 않는 말한다
NullVoxPopuli

1
프로젝트가 .NET 4.5를 대상으로하고 참조를 추가 System.Net.Http.dll했습니까?
M.Babcock 2012 년

3
음 .. 아니에요. 솔루션 탐색기 에서 프로젝트를 마우스 오른쪽 단추로 클릭 Add References하고 대화 상자가 나타나면 클릭하고 가장 왼쪽 탭을 선택합니다 (기본 제공 참조 대화 상자를 사용하지 않지만 내 이름은 어셈블리 라고 함 ). System.Net.Http두 번 클릭하고 다시 빌드 라는 항목이 표시 될 때까지 목록을 스크롤하십시오 .
M.Babcock 2012 년

1
확실히. 다음 은 MSDN 몇 가지 문서입니다. 문제가 발생하면 알려주세요.
M.Babcock 2012 년

1
여러 프로젝트가있는 솔루션에서 작업하고 있습니까? 보고있는 파일이 포함 된 프로젝트에 System.Net.Http 어셈블리가 설치되어 있습니까? 패키지 관리자에서 어떤 프로젝트가 어떤 nuget 패키지를로드할지 조정할 수 있습니다.
Haymaker87

82

NuGet> Microsoft.AspNet.WebApi.Client 패키지


4
이것은 나를 위해 문제를 거의 해결했습니다. 나는이 패키지를 설치했다 : nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2
Boinst

3
받아 들여진 답변 (참조 추가)은 도움이되지 않았지만 도움이되었습니다. 감사.
adinas 2015

1
이것이 올바른 접근 방식입니다. dll에 대한 참조를 추가하면 빌드 서버에서 문제가 발생할 수 있습니다. 올바른 너겟 패키지가 있으면 문제가 해결됩니다.
Darth Coder

15

내가 어떻게 해결했는지.

  1. 프로젝트 (!) "속성"을 열고 "응용 프로그램"을 선택하고 대상 프레임 워크 ".Net Framework 4.5"를 선택합니다.
  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭-> 참조 추가
  3. "Assemblies"-> "Extensions"옵션 "System.Net.Http"가 선택 해제되어 있는지 확인하십시오.
  4. "Assemblies"-> "Framework"로 이동하여 "System.Net.Http"및 "System.Net.Http"옵션을 선택합니다.
  5. 그게 다야!

제 경우에는 2.0.0.0 버전의 .Net 4.0 및 "Assemblies"-> "Extensions"옵션 "System.Net.Http"가 처음에있었습니다. 내 작업 "Assemblies"-> "Framework"옵션 "System.Net.Http"및 "System.Net.Http"는 4.0.0.0 버전이 동일합니다.


그것은 나에게도 문제였습니다. .NET 3.5에서 .NET 4.5로 업그레이드 할 때까지 "System.Net.Http"참조가 표시되지 않았습니다
FelixJongleur42

10

Visual Studio 패키지 관리자 콘솔> 설치 패키지 Microsoft.AspNet.WebApi.Client


5

Visual Studio 10을 사용한다고 가정하면 여기에서 Visual Studio 10 용 System.Net.Http가 포함 된 설치를 다운로드 할 수 있습니다. VS10 용 MVC4 다운로드

설치가 완료되면 VS 프로젝트에서 참조 폴더를 마우스 오른쪽 버튼으로 클릭 한 다음 참조 추가 를 선택 합니다. 그런 다음 찾아보기 탭을 선택 하십시오. 받는 이동 어셈블리 (일반적으로 프로그램 파일 (86) / 마이크로 소프트 ASP.NET/ASP.NET MVC4 / 어셈블리에서) 설치 MVC4에 대한 설치 경로 및 어셈블리 이름 'System.Net.Http.dll'를 선택합니다. 이제 코드 상단에 'using System.Net.Http'를 추가하고 HttpClient 연결 생성을 시작할 수 있습니다.



3

사용하려는 클래스 System.Web.Http가있는 어셈블리에 대한 참조가 HTTPClient있어야합니다. 클래스 선언 앞에 아래 줄을 추가하십시오.

using System.Web.Http;

여전히 오류가 발생하면 다음에서 시도하십시오. Visual Studio

  1. 프로젝트의 References 폴더를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 참조 추가를 선택합니다.
  3. .NET 탭을 선택하거나 .NET Framework 어셈블리가 아닌 경우 찾아보기 단추를 선택합니다.
  4. 오류 메시지 ( System.Web.Http.dll) 에서 네임 스페이스가 포함 된 어셈블리를 두 번 클릭합니다 .
  5. OK 버튼을 누릅니다.

@TheLindyHop : 업데이트 된 답변의 단계를 따르시겠습니까?
아킬

@Akhil-.NET 4.5 어셈블리에 HttpClient속합니다 System.Web.Http.dll(아님 System.Net).
M.Babcock 2012 년

@ M.Babcock : 알려 주셔서 감사합니다. 답 : 업데이트 필자는
아킬

참조 폴더를 표시하려면 어떻게해야합니까? 난 그냥 파일을 시작했습니다 : 외부에서 어떤 프로젝트의 = \
NullVoxPopuli

좋아, 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Properties. References왼쪽에 보일 것 입니다.
아킬



1

HttpClient 는 .net 4.5의 새로운 기능입니다. 아마도 HttpWebRequest를 사용해야합니다 .


질문에 포함 된 코드는 이미 사용 HttpWebRequest하고 있지만 왜 사용 하지 않는지 확실하지 않습니다.
M.Babcock 2012 년

동의합니다. HTTPClient가 선언되고 있지만 사용되지 않습니다. 매우 이상합니다.
Kibbee 2012 년

네임 스페이스를 포함하여 문제가 있습니다. System.Net.Http 사용; yeilds 오류 'HTTP는'네임 스페이스 'System.Net'에 존재하지 않습니다
NullVoxPopuli

.Net 4.5 컴파일러를 사용하고 있습니까?
Kibbee 2012 년

0

문제를 해결하려면 :

  1. 솔루션 탐색기로 이동하십시오.
  2. 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 추가를 선택하십시오.
  3. 참조를 선택하고. Net framework 4.5로딩 완료
  4. 아래로 스크롤하여 확인을 선택 System.Net.Http하고 클릭하십시오.

문제 해결됨.


0

참조를 위해 "로컬 복사"속성을 True로 설정했습니다. 참조를 확장하고 System.Net.Http를 마우스 오른쪽 단추로 클릭 한 다음 속성 창에서 로컬 복사 속성 값을 True로 변경합니다. VS2019를 사용하고 있습니다.



0

Nuget 패키지 관리자를 사용하여 Microsoft.AspNet.WebApi.Core를 설치합니다.

금후:

using System.Web.Http;

또는 VB를 사용하는 경우

imports System.Web.Http



-1

Visual Studio에서 nuget을 사용하여 패키지를로드 할 수 있습니다.

Microsoft.AspNet.WebApi.WebHost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.