我有一個從客戶端發送一個大的XML到WCF net.tcp服務的問題,並且某些機器上的客戶端在調用方法時會引發內存不足異常,而我無法在我的本地機器上重現: 異常消息:無法分配33554432字節的託管內存緩衝區。可用內存量可能很低。WCF NetTcp服務和流式傳輸模式
因此,通過閱讀方式來解決這個問題,它接縫流是一種方式。 所以我改變了客戶端都與服務相應的綁定:
<netTcpBinding>
<binding name="NetTcpBinding_IPricerDataService" closeTimeout="00:10:00" transferMode="Streamed"
openTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" />
</netTcpBinding>
不過,我的印象是,這意味着還改變服務方法簽名使用的是流參數下: http://msdn.microsoft.com/en-us/library/ms789010(v=vs.110).aspx
我沒有做到這一點,我已經離開了方法簽名,因爲他們原來是這樣,但我的客戶仍然可以按照以前的方式調用服務方法,並且所有這些都按預期工作。
這是否意味着流式轉換代碼沒有按預期方式使用,還是我不需要更改方法簽名以支持流式傳輸? 任何想法我怎麼能真正檢查?
@DanielKelley它不能回答這個問題嗎? '這是否意味着流式轉換代碼沒有按預期使用,或者我不需要更改方法簽名以支持流式傳輸?「,以及一些關於未分配緩衝區的說法。 – aevitas
@DanielKelley謝謝,我會編輯答案,簡單地陳述「是的,你應該。」因爲這似乎是你的追求。如果你覺得它沒有回答這個問題,請隨時downvote。 – aevitas
@DanielKelley謝謝,我詳細闡述了我的答案。 – aevitas