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

Mat*_*son 3 c# asp.net

我访问我的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();
Run Code Online (Sandbox Code Playgroud)

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

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

usr*_*ΛΩΝ 9

问题在于r.StatusCode = 200;,它对应于设置标题的第一行.

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

你必须早点做到这一点.