Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# 在WCF中传递文件流_C#_Wcf_Filestream - Fatal编程技术网

C# 在WCF中传递文件流

C# 在WCF中传递文件流,c#,wcf,filestream,C#,Wcf,Filestream,在我将filestream的引用从客户端传递到服务,并且服务开始将该流下载给他之后,我如何从客户端确定到目前为止(当我使用filestream对象时)读取了多少字节 我的目标是只计算这个文件的客户端上传速度,我能想到的唯一方法就是这样 扩展FileStream或为其创建包装。重写读取方法并使用计数器计数读取的字节数 扩展(未正确实现,但应足以解释) 扩展FileStream或为其创建包装器。重写读取方法并使用计数器计数读取的字节数 扩展(未正确实现,但应足以解释) 那没有任何意义。如何序列化文件

在我将filestream的引用从客户端传递到服务,并且服务开始将该流下载给他之后,我如何从客户端确定到目前为止(当我使用filestream对象时)读取了多少字节


我的目标是只计算这个文件的客户端上传速度,我能想到的唯一方法就是这样

扩展FileStream或为其创建包装。重写读取方法并使用计数器计数读取的字节数

扩展(未正确实现,但应足以解释)


扩展FileStream或为其创建包装器。重写读取方法并使用计数器计数读取的字节数

扩展(未正确实现,但应足以解释)


那没有任何意义。如何序列化文件流?我以流对象的形式传递它,并以消息的形式传递有关它的一些信息。@Jonathan Allen:WCF可以在流模式下工作,在流模式下,is只以字节的形式发送数据。我也很惊讶这是可能的。FileStream对象既不是[Serializable]也不是[DataContract]。这是因为它是Stream的一个子类,是[Serializable]吗?必须是,找不到其他原因。这没有任何意义。如何序列化文件流?我以流对象的形式传递它,并以消息的形式传递有关它的一些信息。@Jonathan Allen:WCF可以在流模式下工作,在流模式下,is只以字节的形式发送数据。我也很惊讶这是可能的。FileStream对象既不是[Serializable]也不是[DataContract]。这是因为它是Stream的一个子类,是[Serializable]吗?必须是,找不到其他原因。好主意。但“扩展文件流或为其创建包装器”是什么意思呢?遗产?谢谢*您在返回行之后编写了一个代码。错了,还是我遗漏了什么?好主意。但“扩展文件流或为其创建包装器”是什么意思呢?遗产?谢谢*您在返回行之后编写了一个代码。错了还是我遗漏了什么?
   public class CountingStream : System.IO.FileStream {

      // provide appropriate constructors

      // may want to override BeginRead too

      // not thread safe

      private long _Counter = 0;

      public override int ReadByte() {
         _Counter++;
         return base.ReadByte();            
      }

      public override int Read(byte[] array, int offset, int count) {
         // check if not going over the end of the stream
         _Counter += count;
         return base.Read(array, offset, count);             
      }

      public long BytesReadSoFar {
         get {
            return _Counter;
         }
      }
   }