Вызов асинхронного метода в тупике Net3.5

Я использую.net3.5 и у меня установлено следующее введите описание изображения здесь Эта операция зависает. Может кто-нибудь сказать мне, что я должен делать по-другому?

HttpClient Client;
    response =  await  Client.SendAsync(request, cancellationToken).ConfigureAwait(false);

У меня был свой проект в Net4.0 раньше, и та же строка кода работала со следующими библиотеками.

введите описание изображения здесь

Мне нужно было перейти на Net3.5, и теперь мой асинхронный вызов зависает со статусом ответа WaitingForActivation,

Я также только что понял, что следующие работы:

var response = await _client.GetAsync(Url, cancellationToken).ConfigureAwait(false);

Также возвращает значение в response.Results. Может быть, что-то происходит с SendAsync в библиотеке?

После дальнейшего расследования я понимаю, что для следующего

        var request1 = new HttpRequestMessage(HttpMethod.Post, new Uri("http://localhost:7000/connect/token"));
        var request2 = new HttpRequestMessage(HttpMethod.Post, new Uri("http://localhost:7000/connect/token"))
        {
            Content = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("grant_type", "client_credentials"),
                new KeyValuePair<string, string>("scope", "hq_api_access")
            })

        };

        var response1 = await client.SendAsync(request1).ConfigureAwait(false);
        var response2 = await client.SendAsync(request2).ConfigureAwait(false);

request2 висит. Я предполагаю, что это ошибка в библиотеке, которая возникает, когда объект запроса установлен с содержимым. Есть ли другой клиент, который я могу использовать? для платформы.net 3.5, если нет спасения.

Минимальный, полный и проверяемый пример Как предлагается в комментарии ниже. Я создал пример, чтобы повторить проблему. Я использую Visual Studio 2015. Создано новое консольное приложение.net3.5.

Я установил следующее 1. Install-Package Rackspace.HttpClient35 -Pre 2. Install-Package TunnelVisionLabs.Threading -Pre

Ниже показано, как выглядит основная программа

class Program
    {
        static void Main(string[] args)
        {
            var r = Demo();
            var a = r.Result;
        }

        public static async Task<HttpResponseMessage> Demo()
        {
            var client = new HttpClient();
            var request1 = new HttpRequestMessage(HttpMethod.Post,
                new Uri("https://demo.identityserver.io/connect/token"));
            var request2 = new HttpRequestMessage(HttpMethod.Post,
                new Uri("https://demo.identityserver.io/connect/token"))
            {
                Content = new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
                {
                    new KeyValuePair<string, string>("grant_type", "client_credentials"),
                    new KeyValuePair<string, string>("scope", "api")
                })
            };

            var response1 = await client.SendAsync(request1).ConfigureAwait(false);
            var response2 = await client.SendAsync(request2).ConfigureAwait(false);

            return response1;
        }
    }

Когда я отлаживаю с помощью breakpionts, response1 возвращает ответ, но response2 зависает.

введите описание изображения здесь

0 ответов

Другие вопросы по тегам