代码是一个简单的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,所以它不是一个大小的东西。
答案 0 :(得分:0)
<强>解决方案强>
看起来这个错误是由删除引起的:
result.Content.Headers.ContentLength = stream.Length;
删除此修复此问题。不知道为什么它可以通过HTTP而不是HTTPS工作。