WCF 通道:10 分钟后服务器未响应
WCF Channel: Server not responding after 10 minutes
我创建了一个由客户端和服务器组成的架构,它们在本地主机的 WCF 通道上进行通信,一切正常,但如果两者之间没有 activity(来自客户端的请求)更多超过 10 分钟服务器不再响应。连接仍然存在,但只是服务器没有响应客户端请求,因此客户端必须断开连接并重新连接才能向服务器发送请求。也许我漏掉了一些参数。
我使用的地址是:net.tcp://localhost:8080/ICS;
通道类型:双工;
这里的问题在receiveTimeout
。服务主机使用此超时来确定何时丢弃空闲连接。如果在配置的时间跨度内没有收到消息,连接将关闭。默认为 10 分钟。
更新,ReliableMessaging
未启用因此编辑 InactivityTimeout
没有意义
而更改我的绑定设置的 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
我创建了一个由客户端和服务器组成的架构,它们在本地主机的 WCF 通道上进行通信,一切正常,但如果两者之间没有 activity(来自客户端的请求)更多超过 10 分钟服务器不再响应。连接仍然存在,但只是服务器没有响应客户端请求,因此客户端必须断开连接并重新连接才能向服务器发送请求。也许我漏掉了一些参数。
我使用的地址是:net.tcp://localhost:8080/ICS; 通道类型:双工;
这里的问题在receiveTimeout
。服务主机使用此超时来确定何时丢弃空闲连接。如果在配置的时间跨度内没有收到消息,连接将关闭。默认为 10 分钟。
更新,ReliableMessaging
未启用因此编辑 InactivityTimeout
没有意义
而更改我的绑定设置的 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