2009-02-27 45 views
2

我已经编写了大部分使用WCF的代码片段,其中客户端订阅服务器并且服务器将数据推送到客户端。在WCF中设置回调的receiveTimeout?

我离开是运行了一段时间,试图puch一些数据到客户端,并得到了一个异常,告诉我我必须设置receiveTimeout属性。

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

回答

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");