我使用WCF编写了大部分代码,其中客户端订阅了服务器,服务器将数据推送到客户端。
我离开了一段时间并尝试向客户端提供一些数据并得到一个异常,告诉我必须设置receiveTimeout属性。
我在哪里可以设置此属性?到处都看到这个问题解决了,看起来像是使用svcutil.exe生成了WCF代码我还没有这样做,我真的不想从头开始。
答案 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");