当我只知道它的URL时如何使用wcf服务

时间:2008-10-01 09:15:09

标签: wcf

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

如果您知道合同,那么您可以执行以下操作:

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

更多here