如何在.net中从WSDL文件创建代理类

时间:2013-08-05 13:05:28

标签: wcf

我必须使用WSDL文件来创建代理类。 为此,我创建了一个简单的服务并获得相同的WSDL,并使用Internet Explorer中的另存为... 保存到我的磁盘中。 (我希望我在这里做的)。

通过上面的过程,我得到了WSDL文件。

如果我使用以下命令:

D:\Ashok>wsdl CalculatorService.wsdl

我收到如下所示的错误:

  

错误:无法导入绑定'BasicHttpBinding_ICalculatorService'   来自名字节'http://tempuri.org/'。      - 无法导入操作“添加”。      - 缺少元素“http://tempuri.org/:Add”。

我已经搜索了同样的内容并了解我需要进行一些配置设置,但我无法理解我到底需要做什么。

任何人都可以建议我!

3 个答案:

答案 0 :(得分:1)

添加服务引用并将其指向WSDL

修改的 由于您无法使用添加服务参考... http://support.microsoft.com/kb/820122 结束编辑

答案 1 :(得分:1)

如果仔细观察WSDL,请看它里面是这样的:

<s:import schemaLocation="http://..." />

这意味着此WSDL不是独立文件,但它依赖于其他一些文件(这就是WCF决定公开WSDL的方式)。因此,要么保存磁盘上的所有其他文件(并更改schemaLocation以反映其当前位置),这很难,因为您需要多次执行此操作。或者获得flat version of the wsdl。或者在VS中使用“添加服务引用”。

答案 2 :(得分:-1)

我更喜欢从WSDL的文件生成代理。在我的案例中生成此代理的命令行以下一种方式查找:

wsdl /sharetypes file://D:/WSDLs/General.wsdl file:///D:/WSDLs/CalculatorService.wsdl /out:d:\ServiceProxies.cs /n:AssemblyName

更新:您可以在下一篇文章中阅读更多信息 - Multiple web service references sharing types