【问题标题】:memorystream contains bad xml markup when read读取时 memorystream 包含错误的 xml 标记
【发布时间】:2012-06-26 11:53:56
【问题描述】:

我的问题是什么?当我将流写回网络时,打开文件,它包含一些内容,但格式不正确,还有一些内容丢失。

我是否因为逻辑错误而丢失数据?

注意:下面的 readstream 和 writestream 模拟了服务将要填写的内容。我将接收一个流以从服务中读取。我需要写回那个流。

        MemoryStream writeStream = new MemoryStream();
        byte[] buffer = new byte[256];
        OrderDocument doc = new OrderDocument();
        doc.Format = "xml";
        doc.DocumentId = "5555555";
        doc.Aid = "ZZ";
        doc.PrimaryServerPort = "PORT";
        MemoryStream readStream = new MemoryStream(doc.GetDocument());
        while (readStream != null && readStream.Read(buffer, 0, buffer.Length) > 0)
        {
            writeStream.Write(buffer, 0, buffer.Length);
        }
        writeStream.Flush();
        writeStream.Position = 0;
        Response.Buffer = true;
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();

        Response.ContentType = "text/xml";
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xml", doc.DocumentId));
        Response.AddHeader("Content-Length", writeStream.Length.ToString());
        Response.BinaryWrite(writeStream.ToArray());
        Response.End();

【问题讨论】:

  • 什么是OrderDocumentdoc.GetDocument() 是做什么的?这些包含哪些数据?此外,这可能是编码问题。您所描述的听起来像是文本阅读器在 UTF-8 和 ASCII 之间混淆时发生的情况。玩转输出的编码。

标签: c# xml stream httpwebresponse


【解决方案1】:

我是否因为逻辑错误而丢失数据?

可能是的,您可以尝试稍微简化一下您的代码。我真的不认为这里需要多个内存流:

OrderDocument doc = new OrderDocument();
doc.Format = "xml";
doc.DocumentId = "5555555";
doc.Aid = "ZZ";
doc.PrimaryServerPort = "PORT";
byte[] buffer = doc.GetDocument();

Response.Buffer = true;
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "text/xml";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xml", doc.DocumentId));
Response.OutputStream.Write(buffer, 0, buffer.Length);

【讨论】:

  • 这是我创建的一个测试页面,它模拟了服务调用将为我提供什么。我将收到来自服务的流响应,需要将其写回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多