wcf 请考虑增加操作超时
发送到 net.tcp://192.168.1.18:8732/CallbackService 的请求操作在配置的超时(00:00:59.9879994)内未收到回复。
分配给此操作的时间可能已经是更长超时的一部分。这可能由于服务仍在处理操作或服务无法发送回复消息。
请考虑增加操作超时(将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。
网上找了很多资料,都无法解决我的问题。
INotificationServices proxy; DuplexChannelFactory<INotificationServices> channelFactory; const string wsDualHttpBinding = "WSDualHttpBinding_INotificationServices"; const string netTcpBinding = "NetTcpBinding_INotificationServices"; InstanceContext context = new InstanceContext(new NotificationServiceCallBack()); channelFactory = new DuplexChannelFactory<INotificationServices>(context, wsDualHttpBinding); proxy = channelFactory.CreateChannel(); proxy.SendNotification("Are u ready?"); channelFactory = new DuplexChannelFactory<INotificationServices>(context, netTcpBinding); proxy = channelFactory.CreateChannel(); proxy.SendNotification("Are u ready?"); Console.WriteLine("Press Enter to terminate the client"); Console.ReadLine();
客户端配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address="http://192.168.1.18:8888/CallbackService" binding="wsDualHttpBinding" bindingConfiguration="" contract="Library.INotificationServices" name="WSDualHttpBinding_INotificationServices" /> <endpoint address="net.Tcp://192.168.1.18:8732/CallbackService" binding="netTcpBinding" bindingConfiguration="" contract="Library.INotificationServices" name="NetTcpBinding_INotificationServices" /> </client> </system.serviceModel> </configuration>
问题在于
context = new InstanceContext(new NotificationServiceCallBack());
这个是无法共用的。
第二个代理必须重新new一个新的InstanceContext对象,才能够正常查询