2011-05-24 48 views
0

我有一個WCF服務,我想發送一個日誌文件並在服務器上處理它。 該合同是:C# - 如何讀WCF服務中的流

[OperationContract] 
void LogFile(Stream file); 

並在端點使用StreamedRequest林。

我遇到的問題是我無法找到一種方法來讀取服務中的流。

當我調試了電話,我看到流是一個實例:從客戶端發送即時通訊一個MemoryStream

System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream 

所以...我怎樣才能讀取流?

謝謝。

EDIT1: 使用im:

 Stream serviceStream = new MemoryStream(); 
     byte[] buffer = new byte[10000]; 
     int bytesRead = 0; 
     do 
     { 
      bytesRead = file.Read(buffer, 0, buffer.Length); 
      serviceStream.Write(buffer, 0, bytesRead); 
     } while (bytesRead > 0); 
     serviceStream.Position = 0; 

讀取數據流,沒有失控,始終爲0

回答

5

我的壞,在客戶端我忘了流的位置設置爲0,因此服務於它的結束得到與位置流

+0

拯救我的一天!我永遠不會想到它! – aledpardo 2015-12-07 17:48:24

1

不要擔心內部的類型給你的流。只需像往常一樣閱讀該流(例如,使用StreamReader),一切都應該沒問題。請注意,您無需在任何一方的流上調用DisposeClose,WCF將處理該問題。

+0

不工作,看到我的編輯在原崗位 – Nicolas 2011-05-24 02:51:15

+0

你的代碼的服務端是什麼樣的?如果客戶端代碼是您真正使用的,那麼服務端存在問題。 – 2011-05-24 02:52:58

+1

我的不好,在客戶端,我忘了設置流的位置爲0,所以服務得到的位置在最後的流 – Nicolas 2011-05-24 03:05:27