2008-10-01 86 views
1

当我知道的只有它的URL时,我需要动态地使用wcf服务。我没有选择创建服务引用或Web引用,因为我的客户端代码从配置文件中获取URL。我可以从System.ServiceModel命名空间中使用哪些类和方法来完成此操作。当我只知道它的URL时如何使用wcf服务

回答

1

如果你知道合同,那么你可以这样做:

using (WebChannelFactory<IService> wcf = new WebChannelFactory<IService>(new Uri("http://localhost:8000/Web"))) 

更多here

+0

这需要客户端知道IService接口 – Addi 2008-10-01 09:34:00

3

如果你没有服务接口,你必须在最起码,有一个想法至于服务器期望的消息是什么样的;否则它很难做:)

但是肯定有办法做到这一点。您可以先创建服务器期望的原始消息作为输入,然后在Message对象中创建它(我的意思是System.ServiceModel.Channels.Message)。确保你为它设置了所有必要的头文件,具体取决于你期望用来调用客户端的绑定(比如设置正确的凭证,正确的MessageVersion等等)。

然后,您可以使用IRequestChannel或IInputChannel之类的标准通用通道形状(对于单向服务)简单地创建通道工厂,然后使用通道工厂创建新通道并调用该服务。即例如:

Message input = Message.CreateMessage(....); 

ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpoint); 
IRequestChannel channel - factory.CreateChannel(); 

Message output = channel.Send(input); 
相关问题