服务引用为Web引用生成不同的类

时间:2012-08-17 16:40:22

标签: c# azure wsdl

我正在使用这个wsdl来生成类。

https://pal-live.adyen.com/pal/Payment.wsdl

当我将其添加为“网络参考”时,它会创建一个付款类,其中包含付款所需的方法。

将其添加为“服务参考”时,它只会创建一个包含这些方法但没有付款类的界面。

还有其他类,但缺少关键的Payment类,其方法仅在接口中。

wsdl如何生成不同的类?这里的主要区别是什么?如何获得此付款类?

也许值得注意的是,我无法使用Web引用的原因是因为此代码被部署到azure网站,如果我推送Web引用生成的代码,我会收到sdk版本错误。大概是因为.net版本。

由于

1 个答案:

答案 0 :(得分:1)

我使用svcutil根据你的wsdl生成类。

它创建了接口PaymentPortType。这定义了如何与您的服务进行通信的合同。但是,这不知道服务的位置。

它还创建了班级PaymentPortTypeClient。该类继承自ClientBase<PaymentPortType>。通过为PaymentPortTypeClient提供Binding和EndpointAddress,您现在可以获得与服务通信所需的一切。

注意:这可能来自配置文件,此时您将使用构造函数

public PaymentPortTypeClient(string endpointConfigurationName)

ClientBase有一个私有的ChannelFactory。 ChannelFactory.CreateChannel()将创建一个实现PaymentPortType的对象,并可以与您的服务进行通信。这是自动完成的,并存储在ClientBase.Channel中。

最后,PaymentPortTypeClient还实现了PaymentPortType。实现接口中的每个方法以在通道上调用该方法。