繁体   English   中英

.NET,ASHX,“发送PDF Streem后,服务器无法在发送HTTP标头后追加标头”

[英].NET, ASHX, “Server cannot append header after HTTP headers have been sent” after sending PDF Streem

我访问我的ASHX文件,它完美地输出PDF。 如果我使用不同的查询字符串访问相同的ASHX(我将DateTime.Now.Ticks附加到每次访问的结尾),我收到此错误:

发送HTTP标头后,服务器无法添加黑客。

我的代码如下:

copy.CloseStream = false;
document.Close();

var r = context.Response;
r.ExpiresAbsolute = DateTime.Now;
r.BufferOutput = true;
r.ContentType = "application/pdf";
r.AppendHeader("Content-Type", r.ContentType);
r.AppendHeader("Content-disposition", "inline; filename=" + context.Server.UrlEncode(formType.File_Name));

r.BinaryWrite(copyStream.ToArray());
r.StatusCode = 200;
r.End();
originalReader.Close();
copy.CloseStream = true;
copy.Close();

此代码中没有其他地方可以发送标头。 您正在看到与Response对象的整个交互。

我试过用r.Flush(); r.End(); 如果它们已经存在,我也尝试不发送它们,但这会导致其他问题。

问题是r.StatusCode = 200; ,这对应于设置标题的第一行。

由于这是在发送有效载荷之后发生的,因此在HTTP协议中这是不可接受的。

你必须早点做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM