Пользовательские заголовки удаляются, если HttpResponse кодируется с помощью gzip - PullRequest
0 голосов
/ 12 апреля 2019

Я возвращаю HttpResponseMessage:

var fileInfo = this.myAppService.CreateExcelExportFile(exportModel);

Stream stream = File.OpenRead(fileInfo.FullName);

var result = this.Request.CreateResponse(HttpStatusCode.OK);

result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentLength = stream.Length;
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.Add("filename", $"{exportModel.Name}.xls");

return result;

, который привел к ответу, подобному этому:

HTTP/1.1 200 OK
Cache-Control: private,no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Length: 628
Content-Type: application/octet-stream
Expires: 0
Server: Microsoft-IIS/10.0
Content-Disposition: attachment
filename: dfd.xls
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcS2F5IFphbmRlclxEb2N1bWVudHNcZXZlXFNvdXJjZVxJbmZvcnNIVC5HZW5lc2lzQXBpXGV4cG9ydE9mZmxpbmVTYW1wbGVzVG9FeGNlbFw3NTlmYTU4NS0yZjIzLTQyM2QtYjdhZC1lOWNlMTZjY2RiYTU=?=
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Date: Fri, 12 Apr 2019 13:23:24 GMT

После изменения реализации myAppService.CreateExcelExportFile() ответ внезапно стал таким:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: application/octet-stream
Expires: 0
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcS2F5IFphbmRlclxEb2N1bWVudHNcZXZlXFNvdXJjZVxJbmZvcnNIVC5HZW5lc2lzQXBpXGV4cG9ydE9mZmxpbmVTYW1wbGVzVG9FeGNlbFw3NTlmYTU4NS0yZjIzLTQyM2QtYjdhZC1lOWNlMTZjY2RiYTU=?=
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Date: Fri, 12 Apr 2019 13:29:04 GMT
Content-Length: 3054

.., что нарушает мой клиентский код, потому что теперь все заголовки, которые я явно установил в контроллере API, были удалены:

Content-Disposition: attachment
filename: dfd.xls

Как это может быть?Обратите внимание, что ответ был закодирован с использованием gzip.

...