使用WCF通道Factory调用Web服务。可能吗?

时间:2013-09-29 06:09:27

标签: wcf channelfactory

在我正在进行的项目中,我需要调用webservices(asmx)。我想使用wcf并使用channelfactory(无添加服务参考)来调用它们。

有些人可能有很多接口(合同)。

是否有端到端示例如何操作?

    var service=ChannelFactory<?>... How do I get the webserviceContract.

当然,这必须是能够调用Web服务(asmx)的常见方案

感谢您的时间

1 个答案:

答案 0 :(得分:1)

要扩展我的注释,您应该能够创建一个接口,该接口的方法与asmx服务中的Web服务方法相匹配。例如:

网络服务方法

string GetMessage()

void SendMessage(string message)

int AddNumbers(int x, int y)

服务合同

[ServiceContract]
public interface IServiceName
{

    [OperationContract]
    string GetMessage();

    [OperationContract]
    void SendMessage(string message);

    [OperationContract]
    int AddNumbers(int x, int y)
}

<强>的ChannelFactory

ChannelFactory<IServiceName> serviceFactory =
          new ChannelFactory<IServiceName>(new BasicHttpBinding(), 
                             "http://www.services.com/Service.asmx");

不是100%确定这会有效,但很容易尝试。此外,您可能希望在服务合同([ServiceContract(Namespace = "somenamespace")])上设置命名空间以匹配旧的asmx服务,否则可能无法处理消息。