日期:2014-05-17  浏览次数:20951 次

wcf添加构造函数
wcf在什么情况下会给客户端添加一个带InstanceContext参数的构造函数
我是不懂啊 我现在在做双工通信
看了一个demo他添加的参数 我不知道怎么给wcf添加构造啊。。。。
为什么他的demo就不报错呢。。。

------解决方案--------------------
自动产生的,在Visual Studio里面添加服务引用就能产生,至少这种参数不可能是人为添加的,人为处理都是用接口方式调用。
PS:你太急躁,做不好事。
------解决方案--------------------
我看到ServiceReference1这个名字,就知道肯定是自动产生的,绝对不可能是手写出来的。
自动产生的构造函数有很多,你找个只需要传递终结点的调用啊,终结点就一个url字符串,我因为早不用自动产生的方法来做了,所以具体构造函数的模样也记不清了。使用开放服务端的接口类来创建客户端那才叫爽,那才叫快,代码方式手动产生,既好控制,又容易更新,更新的时候接口类一换,直接OK。
给你看一段例子,就这么几行代码搞定,需要设置的都可以代码设置,不过具体设置还需要参考服务端的,保持一致性。
NetTcpBinding binding = new NetTcpBinding() { TransferMode = TransferMode.Buffered, MaxReceivedMessageSize = 2147483647 };
binding.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
binding.Security.Mode = SecurityMode.None;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
binding.Name = "tcpTransport";
EndpointAddress address = new EndpointAddress(new Uri("net.tcp://" + uri),);
var channelFactory = new ChannelFactory<IServer>(binding, address);
channelFactory.Endpoint.Behaviors.Add(new ContextHeaderBehavior());
var channel = channelFactory.CreateChannel();

其中IServer就是服务端定义的接口,里面各种WCF方法,返回的channel就是继承IServer接口的,因此可以直接对它调用所有接口方法。