System.Net.Http:名前空間に欠落していますか?(.net 4.5を使用)


102

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ᴏʀʏ

回答:


106

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.バブコック

3
ええと...そうではありません。右でプロジェクトをクリックソリューションエクスプローラをクリックしてAdd Referencesダイアログボックスが表示されますが、一番左のタブを選択します(私は、組み込みの参照]ダイアログボックスを使用していないが、地雷が呼び出されるアセンブリ)。System.Net.Httpダブルクリックしたアイテムが表示されるまでリストをスクロールして、再構築します。
M.バブコック

1
もちろん。ここだ、それを行うためのMSDNからいくつかのドキュメントが。問題が発生した場合はお知らせください。
M.バブコック

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

1
これが正しいアプローチです。DLLへの参照を追加すると、ビルドサーバーで問題が発生する可能性があります。正しいnugetパッケージがあれば問題は解決します。
ダースコーダー2018年

15

どのように解決したか。

  1. プロジェクト(!)「プロパティ」を開き、「アプリケーション」を選択し、ターゲットフレームワーク「.Net Framework 4.5」を選択します。
  2. プロジェクトを右クリック->参照を追加
  3. [アセンブリ]-> [拡張機能]オプションの[System.Net.Http]がオフになっていることを確認してください
  4. [アセンブリ]-> [フレームワーク]に移動し、[System.Net.Http]および[System.Net.Http]オプションを選択します
  5. それだけです!

私の場合、最初に.Net 4.0と「アセンブリ」->「拡張」オプションの「System.Net.Http」がバージョン2.0.0.0でありました。アクションの後、「アセンブリ」->「フレームワーク」オプションの「System.Net.Http」と「System.Net.Http」は同じ4.0.0.0バージョンでした。


それも私にとって問題でした
。.NET3.5

10

Visual Studioパッケージマネージャーコンソール>インストールパッケージMicrosoft.AspNet.WebApi.Client


5

Visual Studio 10を使用していると仮定すると、Visual Studio 10のSystem.Net.Httpを含むインストールをここから ダウンロードできます。VS10用のMVC4をダウンロードします。

インストールしたら、VSプロジェクトのReferencesフォルダーを右クリックし、[ 参照の追加]を選択します。次に、「参照」タブを選択します。MVC4インストールのアセンブリインストールパス(通常はProgram Files(x86)/ Microsoft ASP.NET/ASP.NET MVC4 / assembliesにあります)に移動し、「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

@Akhil-.NET 4.5アセンブリにHttpClient属しSystem.Web.Http.dllます(ではありませんSystem.Net)。
M.バブコック

@ M.Babcock:教えてくれてありがとう。Iveが回答を更新しました:)
Akhil

参照フォルダーを表示するにはどうすればよいですか?私はただのファイルから始めました:プロジェクトの外= \
NullVoxPopuli

OK、プロジェクトを右クリックしてを選択しますPropertiesReferences左側に見えるはずです。
Akhil



1

HttpClientは.net 4.5の新機能です。おそらくHttpWebRequestを使用する必要があります。


質問に含まれているコードはすでにを使用していますがHttpWebRequest、なぜそれを使用していないのかはわかりません。
M.バブコック

同意した。HTTPClientが宣言されていますが、使用されていません。非常に奇妙な。
Kibbee 2012年

名前空間を含めて問題があります。System.Net.Httpを使用します。エラー「Http」が名前空間「System.Net」に存在しない
NullVoxPopuli

.Net 4.5コンパイラを使用していますか?
Kibbee 2012年

0

問題を解決するため :

  1. ソリューションエクスプローラーに移動します。
  2. プロジェクト名を右クリックして、追加を選択します
  3. 参照を選択して、を許可します。Net framework 4.5読み込みを完了する
  4. 下にスクロールして選択しSystem.Net.Http、[OK]をクリックします。

問題が解決しました。


0

参照用に「ローカルコピー」プロパティをTrueにすると、それができました。[参照]を展開し、System.Net.Httpを右クリックして、プロパティウィンドウで[ローカルコピー]プロパティの値をTrueに変更します。VS2019を使用しています。


0

web.configで参照されていることを確認してください:


0

Nuget Package Managerを使用して、Microsoft.AspNet.WebApi.Coreをインストールします。

この後:

using System.Web.Http;

またはVBを使用する場合

imports System.Web.Http



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.