通过 HTTP 的文件流成功,在 HTTPS 上失败

本文关键字:HTTPS 失败 成功 HTTP 文件 通过 | 更新日期: 2023-09-27 18:34:14

代码是一个简单的Web API操作,它将文件作为附件流式传输回。

服务器:(Web API 控制器操作)(类型:HttpResponseMessage)

  [path fetching code earlier on]
  ...
  var result = new HttpResponseMessage(HttpStatusCode.OK);
  var stream = new FileStream(path, FileMode.Open);
  result.Content = new StreamContent(stream);
  result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
  result.Content.Headers.ContentDisposition.FileName = Path.GetFileName(path);
  result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  result.Content.Headers.ContentLength = stream.Length;
  return result

如果我在 Chrome 中发出请求,服务器端在 HTTP 模式下执行正常并返回我的文件。一切按预期工作...

但是,如果我通过HTTPS执行此操作,则服务器端完成,然后UI挂起下载文件,直到最终超时并显示chrome输出:

GET https://localhost/mysite/api/GetFile?file=ABC net::ERR_CONNECTION_RESET

我做错了什么?我是否必须启用其他功能才能通过 HTTPS/SSL 执行此操作?

笔记;该文件只有大约 50k,所以它不是一个大小问题。

通过 HTTP 的文件流成功,在 HTTPS 上失败

解决方案

看起来此错误是由删除以下内容引起的:

result.Content.Headers.ContentLength = stream.Length;

删除它解决了这个问题。不知道为什么它通过HTTP而不是HTTPS工作。