Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务引用为web引用生成不同的类_C#_Azure_Wsdl - Fatal编程技术网

C# 服务引用为web引用生成不同的类

C# 服务引用为web引用生成不同的类,c#,azure,wsdl,C#,Azure,Wsdl,我正在使用这个wsdl生成类 当我将其添加为“web引用”时,它会创建一个Payment类,其中包含支付所需的方法 当将其添加为“服务引用”时,它仅创建具有这些方法的接口,而不创建付款类 还有其他类,但缺少关键的Payment类,其方法仅在接口中 wsdl如何生成不同的类?这里的主要区别是什么?我如何才能获得这种付款类别 可能还值得注意的是,我无法使用web引用的原因是,此代码正在部署到azure网站,如果推送web引用生成的代码,我会收到sdk版本错误。大概是因为.net版本 谢谢我使用sv

我正在使用这个wsdl生成类

当我将其添加为“web引用”时,它会创建一个Payment类,其中包含支付所需的方法

当将其添加为“服务引用”时,它仅创建具有这些方法的接口,而不创建付款类

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

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

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


谢谢

我使用svcutil根据您的wsdl生成类

它创建了接口
PaymentPortType
。这定义了如何与服务通信的契约。但是,这不知道服务位于何处

它还创建了类
PaymentPortTypeClient
。此类继承自
ClientBase
。通过给PaymentPortTypeClient一个绑定和端点地址,您现在就拥有了与服务对话所需的一切

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

public PaymentPortTypeClient(string endpointConfigurationName)
ClientBase有一个私有的ChannelFactory。CreateChannel()将创建一个实现PaymentPortType并可以与您的服务对话的对象。这将自动完成并存储在ClientBase.Channel中


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

是否有
PaymentClient
类或从
ClientBase
继承的任何类?作为一个侧节点,WCF客户端使用的是接口而不是具体的实现。然后,该接口与
ChannelFactory
ClientBase
一起使用,后者只是
ChannelFactory
的包装器。拥有这个接口通常就足够了。