为WCF中的回调设置receiveTimeout?

时间:2009-02-27 14:18:16

标签: c# wcf

我使用WCF编写了大部分代码,其中客户端订阅了服务器,服务器将数据推送到客户端。

我离开了一段时间并尝试向客户端提供一些数据并得到一个异常,告诉我必须设置receiveTimeout属性。

我在哪里可以设置此属性?到处都看到这个问题解决了,看起来像是使用svcutil.exe生成了WCF代码我还没有这样做,我真的不想从头开始。

1 个答案:

答案 0 :(得分:3)

我发现了如何做到这一点,在创建管道客户端时,你必须明确设置绑定的超时时间。

NetNamedPipeBinding binding = new NetNamedPipeBinding();
binding.ReceiveTimeout = new TimeSpan(1,0,0);
binding.SendTimeout = new TimeSpan(1,0,0);
DuplexChannelFactory<IVdnServer> pipeFactory = new 
    DuplexChannelFactory<IVdnServer>(_subscriber, binding, 
        new EndpointAddress("net.pipe://localhost/PipeService"));

当您创建服务端点服务器端时,您还必须明确设置超时。

NetNamedPipeBinding binding = new NetNamedPipeBinding();
binding.ReceiveTimeout = new TimeSpan(1,0,0);
binding.SendTimeout = new TimeSpan(1,0,0);

_host.AddServiceEndpoint(typeof(IVdnServer),binding , "PipeReverse");