我打算通過WCF Streaming傳遞MemoryStream,但它似乎無法正常工作,但是當我稍微更改代碼以傳遞FileStream時,它正在工作。實際上,我的目的是通過大量的業務對象集合(可序列化)。我正在使用basicHttpBinding。您的建議將非常感謝!如何通過WCF流傳輸MemoryStream
編輯: 問題的症狀是傳入流爲空。既沒有錯誤也沒有例外。
我打算通過WCF Streaming傳遞MemoryStream,但它似乎無法正常工作,但是當我稍微更改代碼以傳遞FileStream時,它正在工作。實際上,我的目的是通過大量的業務對象集合(可序列化)。我正在使用basicHttpBinding。您的建議將非常感謝!如何通過WCF流傳輸MemoryStream
編輯: 問題的症狀是傳入流爲空。既沒有錯誤也沒有例外。
你沒有提供很多細節,但是,我幾乎可以肯定我知道這個問題是什麼,因爲我已經看到發生了很多事情。
如果您爲MemoryStream
編寫了一些內容以便作爲WCF服務操作的結果返回該內容,則需要在返回之前手動重置該流到其開頭。 WCF將只讀取當前的位置的數據流,因此如果該位置未被重置,將會返回一個空的數據流。
這至少可以解釋你描述的問題。希望這可以幫助。
這裏是一些示例代碼:
[OperationContract]
public Stream GetSomeData()
{
var stream = new MemoryStream();
using(var file = File.OpenRead("path"))
{
// write something to the stream:
file.CopyTo(stream);
// here, the MemoryStream is positioned at its end
}
// This is the crucial part:
stream.Position = 0L;
return stream;
}
非常感謝..你真的保存了一天.. –
如果它的失敗,一個異常必須被拋出。你能在哪裏抓到它?錯誤信息是什麼?信息是否給你提供瞭解發生的事情的線索? –
非常感謝您的回覆。我突然發佈了這個問題,因爲它讓我絕望了好幾天。 –