Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/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
Silverlight 我应该在哪里增加接收超时?_Silverlight_Wcf - Fatal编程技术网

Silverlight 我应该在哪里增加接收超时?

Silverlight 我应该在哪里增加接收超时?,silverlight,wcf,Silverlight,Wcf,我在Silverlight客户端和WCF C#server之间有一个双工TCP连接。服务器不断地向客户端推送更新。但是,在用户不活动大约十分钟后,发送到服务器的任何用户操作都会导致异常,尽管更新会成功继续 考虑到所涉及的时间段和客户端的不活动性,我猜这涉及到ReceiveTimeout设置。但是,当我尝试在客户端上设置它时(请参见下文),它无法解决此问题 CustomBinding binding = new CustomBinding(new BinaryMessageEnco

我在Silverlight客户端和WCF C#server之间有一个双工TCP连接。服务器不断地向客户端推送更新。但是,在用户不活动大约十分钟后,发送到服务器的任何用户操作都会导致异常,尽管更新会成功继续

考虑到所涉及的时间段和客户端的不活动性,我猜这涉及到ReceiveTimeout设置。但是,当我尝试在客户端上设置它时(请参见下文),它无法解决此问题

        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中不直接可用。要使用它,您需要使用上面的模式。