通过 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,所以它不是一个大小问题。
解决方案
看起来此错误是由删除以下内容引起的:
result.Content.Headers.ContentLength = stream.Length;
删除它解决了这个问题。不知道为什么它通过HTTP而不是HTTPS工作。