2016-09-26 7 views
1

私はthis questionと同じ状況にありますが、これは違いは、サプライヤWebを使用している間にStreamがnullの場合、FaultExceptionをスローするための既存の質問にサーバーコードへのアクセス権があることですそれによって返されるサービスStream.Null Webサービスはnullです。null Check Streaming.Null

サプライヤから与えられた理由は、これを消費する既存の他のシステムがあり、返すことからの変更がStream.Nullで、代わりに他のシステムを破損する可能性があるということです。

StreamingでNull Checkingを実行する方法を誰かに教えてもらえるかどうかは不思議でした。

私は== nullを試しましたが、動作していないようです。 WebサービスはWCFのWeb参照を使用してバインドされます。

更新
WCF経由Stream.Nullを返すことは((まあ、少なくともそれは私のサプライヤーから何を返されている以下のようにコメントのいずれかに記載されているものにつきとしてCanSeekが= falseをもたらすと私を発見しましたWebサービス)。これは、WCFから返されるすべてのストリームがCanSeek = falseで、長さを見つけることができないことを意味しますか?

答えて

2

WCFを使用しているので、ストリームから読み取らずに長さをチェックすることはできませんので、代わりに、それが空であるかどうかを見るためにストリームからバイトを読み取ることができます。

var isEmpty = streamFromWcf.ReadByte() == -1; 

Stream.Nullストリームであるかどうかはわかりませんが、空であることがわかります。要件に応じて、実際にヌルストリームかどうかを示すストリームとともにブール値を送信することもできます。

+1

ありがとう@GhostCatコード例を追加しました。 –

1

ストリームのLengthをチェックしたい場合があります。空です。

+0

オブジェクトがnullの場合はスローしませんか? – Noctis

+0

@Noctis nullの場合は常に0を返します。 –

+0

いくつかのより有用な情報は、ストリームと長さに関してここで見つけることができます:[質問](http://stackoverflow.com/q/3373579/1698987) – Noctis