Silverlight 我应该在哪里增加接收超时?
我在Silverlight客户端和WCF C#server之间有一个双工TCP连接。服务器不断地向客户端推送更新。但是,在用户不活动大约十分钟后,发送到服务器的任何用户操作都会导致异常,尽管更新会成功继续 考虑到所涉及的时间段和客户端的不活动性,我猜这涉及到ReceiveTimeout设置。但是,当我尝试在客户端上设置它时(请参见下文),它无法解决此问题Silverlight 我应该在哪里增加接收超时?,silverlight,wcf,Silverlight,Wcf,我在Silverlight客户端和WCF C#server之间有一个双工TCP连接。服务器不断地向客户端推送更新。但是,在用户不活动大约十分钟后,发送到服务器的任何用户操作都会导致异常,尽管更新会成功继续 考虑到所涉及的时间段和客户端的不活动性,我猜这涉及到ReceiveTimeout设置。但是,当我尝试在客户端上设置它时(请参见下文),它无法解决此问题 CustomBinding binding = new CustomBinding(new BinaryMessageEnco
CustomBinding binding = new CustomBinding(new BinaryMessageEncodingBindingElement(),
new TcpTransportBindingElement());
binding.ReceiveTimeout = TimeSpan.MaxValue;
EndpointAddress address = new EndpointAddress(testAddress);
testClient = new TestClient(binding, address);
我是否需要在服务器端设置此选项,或者在客户端设置此选项?
如果我确实需要在服务器上设置,我将如何设置,因为我正在使用OperationContext.Current.GetCallbackChannel()
获取回调接口?
回调接口不允许我访问属性来设置超时,我不确定将其转换为什么来启用此功能。我尝试在服务器端的ServiceHost上设置它,但这似乎也无法修复它。我认为您应该在两侧设置 您可以尝试获取服务端使用的绑定(通过ServiceHost.Description)并设置其ReceiveTimeout
我不明白为什么您不直接使用netTcpBinding并使用web.config或app.config?我会在客户端和服务器上配置扩展的OpenTimeout、ReceiveTimeout和SendTimeout 答案是:没关系。在客户端设置它在技术上是正确的,但根据: 警告:此receiveTimeout值在中不受尊重 Silverlight 4并设置它不会影响 应用程序 从那以后,我对这一点进行了测试,并证实了这一点
答案是每四分钟对服务器执行一次保持活动的调用(选择四分钟是因为它是十分钟接收超时的一半,减去缓冲区)。NetTcpBinding在Silverlight中不直接可用。要使用它,您需要使用上面的模式。