我遇到了与 this question 相同的情况然而,区别在于,现有问题可以访问服务器代码,如果 Stream 为 null,而我正在使用供应商 Web 服务,则它返回 Stream.Null
是 Web 服务为空。
我们确实尝试要求供应商更改抛出错误的方法,但供应商给出的原因是现有其他系统正在使用此方法,并且从返回 Stream.Null
进行更改可能会破坏其他系统系统代替。
我想知道是否有人能够教我如何对 Stream.Null 执行 Null 检查?
我尝试过== null
,但似乎不起作用。 Web 服务使用 Web Reference 绑定(bind)到 WCF。
更新
我发现通过 WCF 返回 Stream.Null 将导致 CanSeek = false (根据下面的评论之一中提到的内容(嗯,至少这是从我的供应商 Web 服务返回的内容。)。这是否意味着从 WCF 返回的每个流都是 CanSeek = false 并且无法找到长度?
最佳答案
由于您使用的是 WCF,因此无法在不从流中读取的情况下检查长度,因此您可以从流中读取一个字节以查看它是否为空。
var isEmpty = streamFromWcf.ReadByte() == -1;
它不会告诉您它是否是 Stream.Null 流 - 只是它是空的。根据您的要求,您可能希望随流一起发送一个 bool 值,表明它是否实际上是一个空流。
关于c# - Null 检查 Stream.Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693545/