我已經在流模式下實現WCF服務,通過Internet傳輸更大的文件。WCF文件流 - 時間問題
到目前爲止,這麼好。
出於統計目的,我想記錄一次傳輸需要多長時間以及傳輸了哪個大小。大小不是問題,但跟蹤轉移時間有點棘手。
爲了我的需要,我實現了一個從MemoryStream派生的DownloadStream類。 這個課程有兩個活動:第一個由開始閱讀觸發,第二個由完成閱讀觸發。它工作正常。 http://www.danflash.com/files/code/DownloadStream.txt
但是,如果客戶端(WCF客戶端)調用WCF方法來獲取流,會發生一件奇怪的事情。 在客戶端,我得到了流的引用,並可以順序讀取它。這意味着,我可以花時間從流中讀取數據,然後獲取傳輸的持續時間。
但是,如果我試圖在服務器端做到這一點,整個流將自動讀取,在任何客戶端開始讀取它之前。看來,流內容將被複制到內存中。
有沒有辦法跟蹤服務器端的傳輸時間?