从 Google Chrome 下载文件时出现网络错误

Failed network error while downloading the files from Google Chrome

我编写了下面的 c# 代码来下载我的应用程序中的附件,当我 运行 代码时,我可以使用 Mozilla、Internet Explorer 下载文件,但这在 Google Chrome.

string base64FileString = result;
byte[] binaryFile = Convert.FromBase64String(base64FileString);
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", String.Format("attachment; filename=\"{0}\"", Request.QueryString["FILENAME"]));
Response.Clear();
Response.BufferOutput = false;
Response.ClearContent();
Response.BinaryWrite(binaryFile);
Response.Flush();
Response.Close();

任何人都可以帮助我在 Chrome

中下载需要做哪些更改
如果 "application/octet-stream" 是您对表单的回复,

Google Chrome 将不会为您打开 "file save" window。

内容类型应该是已知的任何内容,如果您知道的话。例如。 "application/pdf""image/png" 之类的。参见 Complete list of MIME types

查看此问题What could keep Chrome from downloading files?了解更多信息。

您可以尝试添加Content-Length header,但不确定是否有效:

System.IO.FileInfo fl = new System.IO.FileInfo(downloadFilePath);
this.HttpContext.ApplicationInstance.Context.Response.AddHeader("Content-Length", fl.Length.ToString());

同样的问题让我害怕了好几个月。这是我解决它的方法。

  1. 打开 IIS 管理器
  2. 单击您的站点所在的活动服务器 运行
  3. 在“功能视图”中向下滚动并在“服务器组件”下找到配置编辑器。
  4. 在配置编辑器部分下,有一个下拉菜单。浏览它并寻找 system.applicationHost
  5. 在它下面,你应该找到weblimits
  6. 要更改的配置是 minBytePerSecond。默认值可能是 240。Microsoft 建议使用 500,但当用户处于 Internet 连接速度较慢的区域时会出现此下载问题。 修复方法是将值设置为 0。 这可能会有副作用,因为它可能会打开您的服务以 slow loris attack

注意:根据我目前在 Internet 上阅读的内容,我相信此修复适用于 IIS > 7。 我的是 IIS 10,所以上面的步骤适用于 IIS 10。

希望对大家有所帮助。