HttpResponseMessage.Content.Headers ContentDisposition é nulo
Ao baixar um arquivo com HttpClient, primeiro baixo os cabeçalhos e depois o conteúdo. Quando os cabeçalhos são baixados, posso ver a coleção Headers na propriedade Content de HttpResponseMessage, mas ao acessá-la por meio de ContentDisposition on Headers, obtém nulo
Porque isso está acontecendo? O violinista mostra que os cabeçalhos estão bem ...
Código:
var responseMessage = await httpClient.GetAsync(uri,
HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(continueOnCapturedContext: false);
Atualização 1Parece que esta classe está seguindo a implementação de Disposição de Conteúdo descrita emRFC 2616 e falha ao lidar com a atualização de implementação de Disposição de ConteúdoRFC 6266. A RFC 2616 definefilename
valor do parâmetro para ser umstring entre aspas, onde a atualização RFC 6266 apenas afirma que deve servalor.
content-disposition = "Content-Disposition" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "attachment" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | quoted-string )
Gramática RFC 6266content-disposition = "Content-Disposition" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "inline" | "attachment" | disp-ext-type
; case-insensitive
disp-ext-type = token
disposition-parm = filename-parm | disp-ext-parm
filename-parm = "filename" "=" value
| "filename*" "=" ext-value
disp-ext-parm = token "=" value
| ext-token "=" ext-value
ext-token = <the characters in token, followed by "*">
Ondeext-value = <ext-value, defined in [RFC5987], Section 3.2>
Caso de trabalho
Caso com falha
Atualização 2Abriu umbilhete com o MS connect.
Atualização 3A Microsoft reconheceu queisso é um bug e vai consertar.