C# 在WCF中传递文件流
在我将filestream的引用从客户端传递到服务,并且服务开始将该流下载给他之后,我如何从客户端确定到目前为止(当我使用filestream对象时)读取了多少字节C# 在WCF中传递文件流,c#,wcf,filestream,C#,Wcf,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;
}
}
}