假设我有以下 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/