Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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/1/asp.net/32.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# &引用;此流不支持seek操作“;_C#_Asp.net_Arrays_Stream_Byte - Fatal编程技术网

C# &引用;此流不支持seek操作“;

C# &引用;此流不支持seek操作“;,c#,asp.net,arrays,stream,byte,C#,Asp.net,Arrays,Stream,Byte,我从web服务获取流: Stream resultStream = WebServiceEntities.GetAttachment(attachmentId); 我需要将这个流转换成字节数组,但是 尝试#1 尝试#2: 在这两种情况下,(byte[]resultBytes)总是返回一个空字节数组,有人知道是什么导致了这种情况吗?web服务返回的流是否有问题?是否尝试将流位置设置为0resultStream.Position=0@Marcus你好,Marcus,我不能这样做,如果我给它赋值P

我从web服务获取流:

Stream resultStream = WebServiceEntities.GetAttachment(attachmentId);

我需要将这个流转换成字节数组,但是

尝试#1

尝试#2:


在这两种情况下,(byte[]resultBytes)总是返回一个空字节数组,有人知道是什么导致了这种情况吗?web服务返回的流是否有问题?

是否尝试将流位置设置为0
resultStream.Position=0
@Marcus你好,Marcus,我不能这样做,如果我给它赋值Position=0,我会得到以下异常:“这个流不支持seek操作。
m\u ReadBuffer
中的数据可能只是SOAP内容-它的存在并不表明附件有任何实际数据。@EricBergman:不,它可能只是空的——问题可能在完全不同的地方。我建议您查看服务器的原始响应(例如,通过Wireshark或Fiddler)以了解发生了什么。您是否已单步尝试#1以确认实际读取了字节?
byte[] resultBytes = null;
using (Stream stream = resultStream)
{
    using (MemoryStream ms = new MemoryStream())
    {
        int count = 0;
        do
        {
            byte[] buf = new byte[1024];
            count = stream.Read(buf, 0, 1024);
            ms.Write(buf, 0, count);
        } while (stream.CanRead && count > 0);
        resultBytes = ms.ToArray();
    }
}
var memoryStream = new MemoryStream();
resultStream.CopyTo(memoryStream);
byte[] resultBytes = memoryStream.ToArray();