首页 > 解决方案 > 在 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 响应做错了什么会使其无法运行吗?还是我需要启用某些功能才能使其正常工作?

标签: c#asp.net-mvchttphttpresponse

解决方案


尝试使用:

byte[] byteArray = ASCIIEncoding.ASCII.GetBytes(stringb.ToString());
response.BinaryWrite(byteArray);

代替:

response.Write(sb.ToString()); 
response.End();

推荐阅读