0

在我正在处理的项目中,我需要调用 webservices (asmx)。我想使用 wcf 和 channelfactory 调用它们(不添加服务参考)。

有些可能有一个接口(合同),很多没有。

有没有一个端到端的例子怎么做?

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

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

谢谢你的时间

4

1 回答 1

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<IServiceName> serviceFactory =
          new ChannelFactory<IServiceName>(new BasicHttpBinding(), 
                             "http://www.services.com/Service.asmx");

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

于 2013-09-29T06:53:56.200 回答