Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# memorystream在读取时包含错误的xml标记_C#_Xml_Stream_Httpwebresponse - Fatal编程技术网

C# memorystream在读取时包含错误的xml标记

C# memorystream在读取时包含错误的xml标记,c#,xml,stream,httpwebresponse,C#,Xml,Stream,Httpwebresponse,我的问题是什么?当我将流写回web时,打开文件,其中包含一些内容,但所有内容的格式都不正确,还有一些内容丢失 是否由于逻辑错误导致数据丢失 注意:下面的readstream和writestream模拟了服务将填充的内容。我将从服务接收一个要读取的流。我需要把那个流写出来 MemoryStream writeStream = new MemoryStream(); byte[] buffer = new byte[256]; OrderDocumen

我的问题是什么?当我将流写回web时,打开文件,其中包含一些内容,但所有内容的格式都不正确,还有一些内容丢失

是否由于逻辑错误导致数据丢失

注意:下面的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();
是否由于逻辑错误导致数据丢失

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

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);

这是我创建的一个测试页面,它模拟了服务调用将提供给我的内容。我将收到来自服务的流响应,需要将其写回。什么是
OrderDocument
doc.GetDocument()
做什么?这些包含哪些数据?此外,这可能是编码问题。您所描述的内容听起来就像文本阅读器混淆UTF-8和ASCII时发生的情况。对输出进行编码。