Como obter o HttpClient para passar as credenciais junto com a solicitação?

Eu tenho um aplicativo da web (hospedado no IIS) que fala com um serviço do Windows. O serviço do Windows está usando a API da Web do ASP.Net MVC (auto-hospedado) e, portanto, pode ser comunicado com o http usando JSON. O aplicativo da Web é configurado para fazer representação, a ideia é que o usuário que faz a solicitação para o aplicativo da Web deve ser o usuário que o aplicativo da Web usa para fazer a solicitação para o serviço. A estrutura é assim:

(O usuário destacado em vermelho é o usuário mencionado nos exemplos abaixo.)

O aplicativo da Web faz solicitações para o serviço do Windows usando umHttpClient:

var httpClient = new HttpClient(new HttpClientHandler() 
                      {
                          UseDefaultCredentials = true
                      });
httpClient.GetStringAsync("http://localhost/some/endpoint/");

Isso faz a solicitação para o serviço do Windows, mas não passa as credenciais corretamente (o serviço relata o usuário comoIIS APPPOOL\ASP.NET 4.0).Não é isso que eu quero que aconteça.

Se eu mudar o código acima para usar umWebClient em vez disso, as credenciais do usuário são passadas corretamente:

WebClient c = new WebClient
                   {
                       UseDefaultCredentials = true
                   };
c.DownloadStringAsync(new Uri("http://localhost/some/endpoint/"));

Com o código acima, o serviço informa o usuário como o usuário que fez a solicitação para o aplicativo da web.

O que estou fazendo de errado com oHttpClient implementação que está fazendo com que ele não passe as credenciais corretamente (ou é um bug com oHttpClient)

A razão pela qual eu quero usar oHttpClient é que tem uma API assíncrona que funciona bem comTasks, enquanto oWebClientA API do asyc precisa ser tratada com eventos.

questionAnswers(7)

yourAnswerToTheQuestion