[英]How can I send stream with a specific position through wcf?
我的問題是,當客戶端調用服務器上的方法以在特定位置獲取流時,每次流的位置都為0。
我能做什么?
服務器方法:
public Stream SearchTorrent(int TorrentID, int Position)
{
string FilePatch = ClientBusinessLogic.MyTorrents().Where((MyTorrent1) => MyTorrent1.TorrentID == TorrentID).ToList().First().Patch;
Stream File = new FileStream(FilePatch, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
File.Position = Position;
return File;
}
客戶方法:
Stream SeederFile = this.SeederInterface.SearchTorrent(TorrentID, Part.From);
Part.From值不為0。但是返回的流以位置vlaue 0返回。
從服務器方法返回的Stream
不會通過引用客戶端返回。 那就是:他們不會吸引您。
他們得到的是您的內容(從Position
開始)流式傳輸到他們,因此他們得到的流從0開始,原始數據流的末尾。
基本上:您不能返回對流的引用。 您將獲得內容的副本。
您實際上在嘗試做什么?
更新:如果要返回文件的一部分,則可以使用byte[]
。 無論如何,這基本上就是線路上正在發生的事情。 這種方法的缺點是您必須將塊讀入服務器的內存中。
因此,作為優化,您仍然可以返回Stream
。 該流可以包裝您要返回的文件部分。 請注意,它將始終從零位置開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.