2012-02-20 158 views
6

以下代码(ContentType行)出现错误(服务器无法在发送HTTP标头后设置内容类型)。我应该改变什么?服务器在发送HTTP标头后无法设置内容类型

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.ClearContent(); 
response.ContentType = "text/plain"; 
response.AddHeader("Content-Disposition", "attachment; filename=" + System.IO.Path.GetFileName(PervasiveConstants.DownloadZipLocation) + ";"); 
response.TransmitFile(PervasiveConstants.DownloadZipLocation); 
response.Flush(); 
response.End(); 

这是在Sharepoint 2010 webpart中。

+1

这是所有服务器的一般“问题”。一旦程序开始生成内容,标题应发送给客户端,无法更改。 为了在程序中的任何位置设置标题,您需要启用输出缓冲或稍微。它在Apache/php中被称为“输出缓冲”,但在其他服务器中应该有类似的东西。 – kirilloid 2012-02-20 12:14:19

+1

为什么从'ClearContent'开始?如果响应已经*有*内容,那么你的代码可能在这个过程中运行得太晚了。 – 2012-02-20 13:17:05

回答

5

尝试设置response.BufferOutput = true;。在设置response变量后立即执行此操作。

+1

我用 ** System.Web.HttpResponse响应= System.Web.HttpContext.Current.Response; ** ** = Response.BufferOutput真实; ** 但我仍然得到同样的错误。 – 2016-02-04 08:15:08

1

我有一个非常类似的问题,这在网络上。我在后面的代码中加入以下代码到我的按钮解决了这个问题:

ScriptManager.GetCurrent(this).RegisterPostBackControl(btnPrint); 
-1

我有同样的问题,以下解决方案解决了这个问题, 运行response.AddHeader(

0

该解决方案之前运行response.ClearHeaders();为我工作, 在方法开始处添加此行代码,

Server.ClearError(); 
相关问题