.net - 流作为 WCF 中的返回值 - 谁处理它?

标签 .net wcf stream idisposable

假设我有以下 WCF 实现:

public Stream Download(string path)
{
    FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
    return stream;
}

谁负责处理返回值?毕竟,可能会出现网络故障,因此消费者可能无法处理它。

最佳答案

服务负责关闭流,除非您更改默认行为 it does it automatically (始终使用具有默认值的行为)。如果将 OperationBehavior.AutoDisposeParameters 设置为 false,则必须为 OperationContext.OperationCompleted 注册处理程序,并按所述处理程序中的流 here .

客户端无法关闭流,因为客户端有不同的流 - 您没有传递对流的引用或对文件处理程序的引用。内部文件内容被复制到传输,客户端在自己的流实例中处理它(他负责处理它)。

关于.net - 流作为 WCF 中的返回值 - 谁处理它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483320/

相关文章:

c# - 面板可见性在 C# visual studio 2010 中没有改变

WCF DataContract 的 C# 类结构

c# - 如何使用 try/catch/finally C# 有效地管理流

C++ 新手 : using stream for writing data to file. .. 为什么我的代码引入回车?

c# - 如何在 Windows XP 中配置 Windows Activation Server (WAS) 来承载 WCF 服务?

java - 读取输出时如何处理 Java Processes 孙子进程?

c# - 如何枚举匿名类型的集合?

.net - 需要非常快速的线程安全收集或内存数据库

c# - 为什么这段代码没有编译?

asp.net - 从 WCF 服务返回 pdf 文件?