Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF通道:服务器在10分钟后没有响应_C#_Wcf_Wcf Data Services_Wcf Binding_Wcf Security - Fatal编程技术网

C# WCF通道:服务器在10分钟后没有响应

C# WCF通道:服务器在10分钟后没有响应,c#,wcf,wcf-data-services,wcf-binding,wcf-security,C#,Wcf,Wcf Data Services,Wcf Binding,Wcf Security,我创建了一个由客户端和服务器组成的架构,它们在本地主机的WCF通道上进行通信,一切正常,但如果两个客户端之间的活动(来自客户端的请求)超过10分钟,服务器将不再响应。连接仍处于活动状态,但服务器没有响应客户端请求,因此客户端必须断开连接并重新连接,以便能够向服务器发送请求。也许我漏掉了一些参数 我使用的地址是:net。tcp://localhost:8080/ICS; 信道类型:双工 这里的问题在于receiveTimeout。服务主机使用此超时来确定何时断开空闲连接。如果在配置的时间范围内未收

我创建了一个由客户端和服务器组成的架构,它们在本地主机的WCF通道上进行通信,一切正常,但如果两个客户端之间的活动(来自客户端的请求)超过10分钟,服务器将不再响应。连接仍处于活动状态,但服务器没有响应客户端请求,因此客户端必须断开连接并重新连接,以便能够向服务器发送请求。也许我漏掉了一些参数

我使用的地址是:net。tcp://localhost:8080/ICS;
信道类型:双工

这里的问题在于
receiveTimeout
。服务主机使用此超时来确定何时断开空闲连接。如果在配置的时间范围内未收到任何消息,则连接将关闭。默认时间为10分钟。

更新,
可靠消息
未启用,因此编辑
不活动超时
没有意义

而更改我的绑定设置的
ReceiveTimeout
参数可以解决这个问题

我的代码:

var bind = new NetTcpBinding();                   // my binding instance
var relSessionEnabled = bind.ReliableSession.Enabled;            // this is false
var inactivityTimeout = bind.ReliableSession.InactivityTimeout;  // this is 10 minutes
bind.ReceiveTimeout = TimeSpan.MaxValue;          // this was 10 minutes before this instructuion

查看
inactivityTimeout
receiveTimeout
。是的,似乎这就是问题所在。我发现这篇文章解释了所有超时,不活动和接收的超时是10分钟。问题是服务操作没有在合理的时间内返回,还是您知道服务操作正在长时间运行,但调用方超时?操作非常短(几秒钟)如果没有非活动性,系统会工作数天……只有在使用WCF支持WS-ReliableMessaging时,非活动性超时才相关。在老年退休金计划的问题中,没有任何东西表明他们是。此外,接收超时是消费者端设置,对服务端没有影响,问题似乎出现在OPs中。我非常确定
receiveTimeout
不是消费者端设置。我还添加了
inactivityTimeout
,因为存在一些依赖项,并且两者都应该对齐,因为某些组合没有意义。更新、可靠消息被禁用,因此编辑inactivityTimeout没有意义,正如Tom Redfern所说。而更改“我的绑定设置”的ReceiveTimeout参数可以解决这个问题。@Lepijohnny您实际上是对的。为我关于接收超时的错误断言道歉。请编辑您的问题以反映,我将投票给您。