FileStream成功通过HTTP,在HTTPS上失败

时间:2016-02-11 11:31:58

标签: c# asp.net asp.net-web-api

代码是一个简单的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,所以它不是一个大小的东西。

1 个答案:

答案 0 :(得分:0)

<强>解决方案

看起来这个错误是由删除引起的:

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

删除此修复此问题。不知道为什么它可以通过HTTP而不是HTTPS工作。