Подтвердить что ты не робот

Недопустимый метод объекта HttpClient

Я отделяю некоторый код от веб-сайта и после копирования кода для конкретной страницы, о которой идет речь, я получаю сообщение об ошибке в строке кода PostAsJsonAsync():

HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);

который находится в этом операторе using (добавленные заголовки также)

        using System;
        using System.Net.Http;
        using System.Net.Http.Headers;
        using System.Net.Mail;
        using System.Threading.Tasks;
        //...

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("WebServiceAddress");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);
            if (response.IsSuccessStatusCode)
            {
                const string result = "Thank you for your submission.";
                return result;
            }
            //...
        }

Ошибка, которую я получаю, говорит

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

хотя он работает в прежнем проекте и полностью копируется из этого проекта. Я забыл что-то добавить?

Я ценю любую помощь по этому вопросу.

4b9b3361

Ответ 1

Вам нужно будет добавить следующую зависимость,

System.Net.Http.Formatting.dll

Он должен быть там в расширениях → сборке.

или

Вы можете добавить Microsoft.AspNet.WebApi.Client пакет nuget

Ответ 2

Я написал свой собственный метод расширения, так как считаю, что этот метод предназначен только для старых .NET api и используется сериализатором Newtonsoft JSON:

// Extension method to post a JSON
public static async Task<HttpResponseMessage> PostAsJsonAsync(this HttpClient client, string addr, object obj)
{
    var response = await client.PostAsync(addr, new StringContent(
            Newtonsoft.Json.JsonConvert.SerializeObject(obj),
            Encoding.UTF8, "application/json"));

    return response;
}

Ответ 3

У меня была такая же ошибка, даже если установлен соответствующий пакет Nuget. Что мне помогло, так это выражение using:

using System.Net.Http;