我有一个WCF服务,它通过NetTcp端点将PDF文件作为流返回。这一切都很好。但是,如果找不到该文件,或者我找不到数据库中的相关行来检索文件路径,那么我将从服务返回Stream.Null
。
但是我似乎找不到比较返回流来检查并查看它是否为空的方法。
我尝试了以下内容:
If myStream IsNot Stream.Null
'Code to execute if stream isn't empty
End If
和
If Not streamPDF.Equals(Stream.Null)
'Code to execute if stream isn't empty
End If
但这些都不起作用,因为代码只会进入If
块。
有什么想法吗?
答案 0 :(得分:0)
Stream.Null
只是您的服务范围构造。对于客户端,您很可能会获得空流=>它将是相同的流类型,就像您真正发送数据一样。
这是奇怪的设计选择。如果文件不存在,则为“预期”异常,应使用FaultContract
处理并输入FaultException
。
答案 1 :(得分:0)
redirect
字段{{1}}不会消耗任何Stream.Null operating资源的流。
您可以使用system属性检查流是否为空。
答案 2 :(得分:0)
如果您的代码在不同的计算机上运行,这是正常的。空流(文档中的“没有后备存储的流”)未通过网络进行不同的编组。在客户端,它只是一个始终返回EOF的流。
如果您需要携带一些额外的信息,您需要找到另一种方式(其他参数/值信息,例外),但不要使用Stream本身,或使用双方都理解的数据约定。例如“如果文件只有1个字节长并且包含字符255,那么,它就是'空流'”。