[英].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.