我只知道URL时如何使用WCF服务

时间:2020-03-06 14:58:06  来源:igfitidea点击:

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

解决方案

如果我们知道合同,则可以执行以下操作:

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

这里更多

如果没有服务接口,则至少必须对服务器期望的消息有一个想法。否则很难做:)

但是,肯定有一种方法可以做到这一点。我们可以首先创建服务器期望作为输入的原始消息,然后在Message对象中创建它(我的意思是System.ServiceModel.Channels.Message)。确保根据期望用于调用客户端的绑定设置所有必需的标头(如设置正确的凭据,正确的MessageVersion等)。

然后,我们可以简单地使用标准通用通道形状(例如IRequestChannel或者IInputChannel)(用于单向服务)创建通道工厂,并使用通道工厂创建新通道并调用服务。 IE。就像是:

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

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

Message output = channel.Send(input);