c# - Null 检查 Stream.Null

标签 c# wcf

我遇到了与 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/

相关文章:

asp.net-mvc - 如何通过模型的wcf服务层访问数据注释

c# - 将查询转换为字符串时出错

c# - Angular - WCF RESTful 服务 - 发送日期时间

c# - WCF 存在并且部分工作但对于某些调用返回 "no endpoint listening - (404) Not Found."

c# - 使用 asp.net 的 SQL Server View

c# - WCF 服务,由于传入流的 "Unexpected end of file"引发流异常

java - Java 中存在哪些工具相当于 .NET 的 svcutil.exe?

c# - IFormFile 拒绝 ASP.Net Core 访问路径

c# - 根据另一个 List<int> 对 List<string> 进行排序

c# - JWT 总是在 .net 核心 api 上返回未经授权的 401