MessageBodyStream を MemoryStream (からByte[])に変換する
WCFサービスから MemoryStream を受け取ると、クライアント側では MessageBodyStream 型で取れてくる。
インターフェースは同じ Stream なんだけど、 MessageBodyStream を直接 MemoryStream にはキャストできない。(最終的にはHTTP Responseにセットしたいので、Byte にしたい)
なので、 MessageBodyStream をぐるぐる回しながら読み取って MemoryStream に入れ直し、最終的にToArray() で Byte を作っていたんだけど。
.NET4 から CopyTOなるメソッドが追加されていたことを知る。
c# - Creating a byte array from a stream - Stack Overflow
public static byte[] ReadFully(Stream input) { using (MemoryStream ms = new MemoryStream()) { input.CopyTo(ms); return ms.ToArray(); } }
だいぶスッキリした。痒い所に手が届く.NET。