问题描述
我在 Windows 2008 服务器上的 IIS 7.5 中托管的 c# .aspx 页面中有一个简单的将 gridview 导出到 csv 函数,该页面运行良好。 我最近将此站点迁移到了新的 Windows 2016 服务器应用程序服务器,该服务器托管在 IIS 10.0 上并且代码库是相同的。 然而,在新服务器上,导出的数据现在也包括来自父页面的所有 html。 我已经检查了 *.csv 的 mimetype 是否存在于 IIS 配置中。
参考代码片段:
var stream = new MemoryStream();
_report.ToFile(stream);
byte[] bytes = stream.ToArray();
stream.Flush();
stream.Close();
HttpContext.Current.Response.Clear();
HttpContext.Current.response.addheader("Content-disposition","attachment; filename=" + Guid.NewGuid().ToString() + ".csv");
HttpContext.Current.response.addheader("Content-Length",bytes.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.BinaryWrite(bytes);
只是确认一下,唯一的变化是网站运行的位置,代码库没有变化。
解决方法
结束响应有效:HttpContext.Current.Response.End(); 谢谢你们!有趣的是,在 IIS 7.5 上运行相同的代码时,不需要结束响应,以便将页面标记不包含在 csv 导出中??!!