C# 当返回流为'时发出返回流;它是子类的一部分

C# 当返回流为'时发出返回流;它是子类的一部分,c#,wcf,stream,C#,Wcf,Stream,我有一个WCF方法: public Stream GetFile(string systemName, string version, string type) { //Code omitted for brevity return File.Open(path, FileMode.Open, FileAccess.Read); } 这可以工作并返回一个有效的文件,我可以保存在另一端 我正在尝试将方法更改为: public GetFileStreamResult GetFile

我有一个WCF方法:

public Stream GetFile(string systemName, string version, string type)
{
    //Code omitted for brevity
    return File.Open(path, FileMode.Open, FileAccess.Read);
}
这可以工作并返回一个有效的文件,我可以保存在另一端

我正在尝试将方法更改为:

public GetFileStreamResult GetFile(string systemName, string version, string type)
{
    //Code omitted for brevity
    var fs = File.Open(path, FileMode.Open, FileAccess.Read);
    return new GetFileStreamResult
    {
        Stream = fs,
        Checksum = fs.GenerateCheckSum()
    };
}
其中
GetFileStreamResult
是:

[DataContract]
public class GetFileStreamResult
{
    [DataMember]
    public Stream Stream { get; set; }

    [DataMember]
    public string Checksum { get; set; }
}
但在执行此操作时,我收到以下错误:

接收对的HTTP响应时出错 . 这可能是由于 未使用HTTP协议的服务端点绑定。这也可能 可能是由于服务器中止了HTTP请求上下文 (可能是由于服务关闭)。有关更多信息,请参阅服务器日志 细节


我在网上找到的关于返回
流的示例
s只返回流,而不返回包含流的对象,因此非常感谢您的帮助。

您是否在重构方法中逐步完成了代码。。当您到达校验和行时,您有
Stream=fs
,fs为null。。。?如果是这样,那就是你的问题。另外,您在哪里定义
路径
是的,我已经完成了,并且
fs
有效且不为空。路径被进一步设置并且正确(文件被打开,我发送的结果是正确的,并且生成了校验和)。
byte[]
是否适合您(如果您有小文件)?我真的怀疑你能不能在[DataContract]对象中混合使用可序列化和不可序列化的对象。嗯,好的。在这种情况下,字节[]将起作用(请随意添加答案)。你知道我可以用什么参考资料来判断我用这种方法做了什么错事吗?是否有其他合同属性可以替代?