网络连接丢失时Wcf读取流失败

时间:2015-05-19 14:34:15

标签: c# wcf streaming

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

在流式传输过程中,如果客户端失去网络连接,客户端将获得套接字超时异常。但是WCF服务继续等待流,直到指定超时。当网络恢复并且下一次从客户端调用wcf服务时,我们发现wcf尚未释放上一个进程并仍在等待先前的响应。

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

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

该文件最多不会发布12小时。在从wcf读取流时,是否有任何方法,如果客户端断开连接,则终止进程。过去两天我一直在苦苦挣扎。请帮忙

1 个答案:

答案 0 :(得分:0)

甚至微软建议使用分块而不是流式传输非常大的内容。 特别是当通信信道不可靠时,enaugh chunkking可能是最好的选择。

尝试使用这样的合同:

    [ServiceContract]
    public interface IFileWriter
    {
        [OperationContract]
        void Open(string file);

        [OperationContract(IsOneWay = true)]
        void Write(byte[] buffer);

        [OperationContract]
        void Close();
    }

有关详细信息,请参阅Large Data and Streaming大数据内容

完全实施的示例here

或者只是google for" WCF流媒体与分组"。

P.S。 Chunking还有其他几个优点 -