我在Windows 2008服务器上的IIS 7.5中托管的c# .aspx页面中有一个简单的导出gridview到csv功能,该功能已经工作了很长时间。我最近将这个网站迁移到一个新的windows 2016服务器应用服务器,托管在IIS 10.0上,代码库是相同的。但是,在新服务器上,导出的数据现在也包括来自父页面的所有html。我已经检查了*.csv的mime类型是否存在于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导出中??