Базовая база 2.2. Вызов SendAync в httpClientHandler не возвращается - PullRequest
1 голос
/ 26 апреля 2019

Я получил очень простой httpClientHandler, который не возвращается из вызова base.SendAsync.

Я пытаюсь сделать так, чтобы захватить файл cookie аутентификации, чтобы я знал, когда обновлять аутентификацию CouchDB.

Нет исключений или чего-либо еще, чтобы указать, что является причиной проблемы.

Предложения?

Вот класс вызова:

public StdHttpClient(IConfiguration conf)
{
    configuration = conf;
    Client = new HttpClient(new AuthHandler());
}
public StdHttpClient()
{
    Client = new HttpClient(new AuthHandler());
}

private async Task<Boolean> GetAuthenticationCookie(Credentials credentials)
{
    var authReq = new { name = credentials.username, credentials.password };
    var authReqString = JsonConvert.SerializeObject(authReq);

    var request = new HttpRequestMessage(HttpMethod.Post, sessionUri);
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    request.Content = new StringContent(authReqString);
    request.Content.Headers.ContentType = new 
    MediaTypeHeaderValue("application/json");

    HttpResponseMessage authResult = await Client.SendAsync(request);

    Console.WriteLine("GetAuth" + authResult.ToString()); //doesn't get here
    return authResult.IsSuccessStatusCode;
}

Обработчик:

public class AuthHandler: DelegatingHandler
{
    private readonly int _maximumAmountOfRetries = 3;

    public AuthHandler() : base()
    {
    }

    public AuthHandler(HttpMessageHandler innerHandler) : base(innerHandler)
    {
    }

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
        CancellationToken cancellationToken)
    {
      HttpResponseMessage response = null;

      response = await base.SendAsync(request, cancellationToken);
      Console.WriteLine("got response from sendasync");  //doesn't get here
      Console.WriteLine(response);

      return response;
    }
}

1 Ответ

0 голосов
/ 27 апреля 2019

ОК, я был глуп.Я пытался вызвать auth как часть кода инициализации из Program.cs, так что Задача была бесхозной.

Извините.

...