当网络连接断开时,Wcf读流失败

本文关键字:Wcf 流失 失败 网络 连接 断开 | 更新日期: 2023-09-27 17:49:49

我正在使用传输模式将大文件流从客户端发送到wcf服务,使用basehttpbinding作为流。

在流式传输过程中,如果客户端失去网络连接,客户端将获得套接字超时异常。但是WCF服务继续等待流直到指定的超时。当网络恢复正常,客户端再次调用wcf服务时,我们观察到wcf没有释放前一个进程,仍然在等待前一个响应。

客户端和wcf服务中指定的超时如下

opentimeout, closetimeout, sendtimeout, receivetimeout设置为12小时

文件12小时内不释放。是否有任何方法,当我们从wcf读取流,如果客户端被断开连接,终止进程。我从过去的两天一直在挣扎。请帮助

当网络连接断开时,Wcf读流失败

即使微软建议使用分块而不是流式处理非常大的内容。特别是当通信信道不够可靠时,分块可能是最好的选择。

试着使用这样的契约:

    [ServiceContract]
    public interface IFileWriter
    {
        [OperationContract]
        void Open(string file);
        [OperationContract(IsOneWay = true)]
        void Write(byte[] buffer);
        [OperationContract]
        void Close();
    }

更多信息请参见大数据和流媒体章节大数据内容

完全实现的例子。

或者直接谷歌"WCF流与分块"。

注:分块处理还有其他几个优点——