当网络连接断开时,Wcf读流失败
本文关键字:Wcf 流失 失败 网络 连接 断开 | 更新日期: 2023-09-27 17:49:49
我正在使用传输模式将大文件流从客户端发送到wcf服务,使用basehttpbinding作为流。
在流式传输过程中,如果客户端失去网络连接,客户端将获得套接字超时异常。但是WCF服务继续等待流直到指定的超时。当网络恢复正常,客户端再次调用wcf服务时,我们观察到wcf没有释放前一个进程,仍然在等待前一个响应。
客户端和wcf服务中指定的超时如下
opentimeout, closetimeout, sendtimeout, receivetimeout设置为12小时
文件12小时内不释放。是否有任何方法,当我们从wcf读取流,如果客户端被断开连接,终止进程。我从过去的两天一直在挣扎。请帮助
即使微软建议使用分块而不是流式处理非常大的内容。特别是当通信信道不够可靠时,分块可能是最好的选择。
试着使用这样的契约:
[ServiceContract]
public interface IFileWriter
{
[OperationContract]
void Open(string file);
[OperationContract(IsOneWay = true)]
void Write(byte[] buffer);
[OperationContract]
void Close();
}
更多信息请参见大数据和流媒体章节大数据内容
完全实现的例子。
或者直接谷歌"WCF流与分块"。
注:分块处理还有其他几个优点——