1. ホーム
  2. asp.net

[解決済み] 'System.Net.Http.HttpContent' に 'ReadAsAsync' の定義がなく、拡張メソッドもありません。

2022-09-21 13:15:41

質問

作成したばかりのWeb APIを利用するためにコンソールアプリを作成しました。コンソールアプリのコードがコンパイルされません。コンパイルエラーが出ます。

'System.Net.Http.HttpContent' does not contain a definition for 
'ReadAsAsync' and no extension method 'ReadAsAsync' accepting a 
first argument of type 'System.Net.Http.HttpContent' could be 
found (are you missing a using directive or an assembly reference?)

このエラーが発生するテストメソッドはこちらです。

static IEnumerable<Foo> GetAllFoos()
{
  using (HttpClient client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("appkey", "myapp_key");

    var response = client.GetAsync("http://localhost:57163/api/foo").Result;

    if (response.IsSuccessStatusCode)
      return response.Content.ReadAsAsync<IEnumerable<Foo>>().Result.ToList();
  }

  return null;
}

このメソッドを使って、MVCクライアントから消費してみました。

どのように解決するのですか?

長い間苦労した末に、解決策を見つけました。

解決策です。 参照を追加して System.Net.Http.Formatting.dll . このアセンブリは C:\Program FilesMicrosoft ASP.NET ASP.NET MVC 4Assemblies フォルダーにあります。

メソッド ReadAsAsync はクラスの中で宣言された拡張メソッドです。 HttpContentExtensions で宣言されている拡張メソッドで、名前空間 System.Net.Http であり、ライブラリ System.Net.Http.Formatting .

リフレクターが救助に来ました!