.NET 4.5 HttpClient PUT ou POST over SSL sempre falha

Estou tendo um tempo terrível para solucionar esse problema. Eu também estou tendo um tempo terrível para reproduzi-lo consistentemente de um aplicativo para outro.

Sob certas circunstâncias, que eu não consigo identificar, fazendoPUT ePOST chamadas usando oHttpClient resulta na seguinte exceção.

Ocorreu um erro ao enviar o pedido.

Exceção Interna:
A conexão subjacente foi fechada: Ocorreu um erro inesperado em um envio.

Exceção Interna:
Esta operação não pode ser executada em um objeto de resultado assíncrono concluído.

Tudo parece funcionar com HTTP, isso só acontece em HTTPS.

Os certificados são válidos, mas eu tentei definir oServicePointManager.ServerCertificateValidationCallback += (s, c, ch, es) => true;

Eu tentei definirclient.DefaultRequestHeaders.ExpectContinue = false;

Eu tentei, o que parece um milhão, outras coisas que vão desde cabeçalhos, autenticação, etc.

Alguém tem alguma idéia do que mais posso verificar, tentar, etc?

Fragmento de código:

// this is my registration in my IoC container...
var handler = new HttpClientHandler
{
    UseDefaultCredentials = true,
    Credentials = CredentialCache.DefaultNetworkCredentials,
};

var client = HttpClientFactory.Create(handler);
client.BaseAddress = new Uri(Properties.Settings.Default.BaseUrl);
client.DefaultRequestHeaders.Add("X-CustomHeader", "value");

// _client is constructor injected into my class...
var response = await _client.PutAsJsonAsync("api/resource/" + id, model).ConfigureAwait(false);
response.EnsureSuccessStatusCode(); // <-- never executes...

ATUALIZAR:

Se eu tirar oConfigureAwait(false) Funciona bem.

Note, este é um aplicativo WPF, especificamente, esta é uma extensão do Visual Studio. No entanto, eu tenho um aplicativo ASP.NET MVC 4 com exatamente o mesmo problema, e esse aplicativo não chamaConfigureAwait(false) em absoluto...

ATUALIZAÇÃO 2:

Atualizei o snippet de código para incluir a instanciação doHttpClient classe. A única coisa que não está incluída no snippet de código é o tipo e a declaração do modelo. Deve ser irrelevante, pois é uma classe serializável com todas as propriedades automáticas sem tipos complexos.

ATUALIZAÇÃO 3:

Eu não sei se isso é relevante, mas eu encontrei algumas coisas que parecem estranhas para mim.

Ao executar o código acima, no Fiddler, recebo um401 noPOST, seguido de 2CONNECTque resultam nas seguintes respostas HTTP:

HTTP / 1.1 200 Conexão Estabelecida
Conexão: fechar

ATUALIZAÇÃO 4:

Eu mudei meu código de registro do IoC para isto:

var handler = new HttpClientHandler
{
    UseDefaultCredentials = true,
    Credentials = CredentialCache.DefaultCredentials,
};

var client = HttpClientFactory.Create(handler);
client.BaseAddress = new Uri(Properties.Settings.Default.BaseUrl);
client.DefaultRequestHeaders.Add("X-CustomHeader", "value");

e agora falha, mas quando abro o Fiddler e deixo decifrar o tráfego ... funciona!

ATUALIZAÇÃO 5:

Eu acredito que isso deve ser um problema no servidor ou um problema de certificação. Qualquer dica sobre o que verificar a partir daqui seria muito apreciada. Os certificados são válidos e emitidos por uma autoridade de certificação confiável.

ATUALIZAÇÃO 6:

Mais depuração e solução de problemas. A exceção ocorre antes doServicePointManager CertificateValidationCallback é invocado.

questionAnswers(2)

yourAnswerToTheQuestion