c# - 在 ASP.NET MVC 中调用时未写入 HttpContext 响应
问题描述
我正在使用 ASP.NET MVC 站点,并且正在尝试启用文件下载。用户选择一些数据并将其添加到逗号分隔的字符串中,该字符串将转换为 csv 文件。我拥有文件所需的所有数据,但是当我调用 HttpContext.Current.Response 时,什么都没有发生。此功能以前可以使用,但现在由于某种原因我无法得到响应来做任何事情。
这是代码(曾经有效):
var response = System.Web.HttpContext.Current.Response;
response.BufferOutput = true;
response.Clear();
response.ClearHeaders();
response.ContentEncoding = Encoding.Unicode;
response.AddHeader("content-disposition", "attachment;filename=" + FN + ".csv");
response.ContentType = "text/plain";
response.Write(sb.ToString());
response.End();
一旦用户单击下载按钮,就会执行此代码。以前,下载图标会出现在浏览器底部,指示文件正在保存。现在,它没有出现,文件也没有保存。响应的状态码是 200 OK,这使得调试问题变得困难,因为根据 Visual Studio,响应执行正常。
我对 HttpContext 响应做错了什么会使其无法运行吗?还是我需要启用某些功能才能使其正常工作?
解决方案
尝试使用:
byte[] byteArray = ASCIIEncoding.ASCII.GetBytes(stringb.ToString());
response.BinaryWrite(byteArray);
代替:
response.Write(sb.ToString());
response.End();
推荐阅读
- r - 根据 R 中的索引将数据帧拆分为多个部分
- python - 如何在 Scrapy 中无错误地下载图像?
- node.js - 如何使用 Mongoose 在 MongoDB 中插入 JSON 数组
- javascript - 如何将 JSON 动态插入手风琴菜单?
- java - 如何实现连接管理?
- select - 如何在 Google Big Query 中将两个值与 SQL 进行比较?
- reactjs - React Redux Store Layout:如何处理“添加项目”请求的“待处理”状态?
- elasticsearch - Liferay 7.1 中使用 Elasticsearch 的自定义构面
- db2 - WinSQL ORDER BY 字母数字 DB2 语法
- javascript - 使用多个输入元素时未触发 Android Chrome 按键事件“Enter”