空检查Stream.Null

时间:2016-09-26 01:32:14

标签: c# wcf

我遇到了与this question相同的情况,但不同的是,现有问题可以访问服务器代码,如果Stream为null而我正在消费供应商,则抛出FaultException返回Stream.Null的Web服务是Web服务为空。

我们确实尝试要求供应商更改方法以引发故障但是供应商给出的原因是现有的其他系统使用此功能并且从返回Stream.Null更改可能会破坏其他系统。

我想知道是否有人可以教我如何对Stream进行Null检查.Null please?

我尝试了== null,似乎无效。 Web服务使用Web引用绑定到WCF。

更新
我发现通过WCF返回Stream.Null将导致CanSeek = false(根据下面的评论中提到的内容(好吧,至少它是从我的供应商Web服务返回的内容。)这是否意味着从WCF返回的每个流都是CanSeek = false并且无法找到长度?

2 个答案:

答案 0 :(得分:3)

由于您正在使用WCF,因此无法在不读取流的情况下检查长度,因此您可以从流中读取一个字节以查看它是否为空。

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

它并不告诉你它是否是Stream.Null流 - 只是它是空的。根据您的要求,您可能希望发送一个布尔值以及说明它是否实际上是一个空流的流。

答案 1 :(得分:1)

您可能想要检查流的Length。如果为0,则流为空。