我有一个使用Web服务的现有项目。一个是作为服务引用添加的,另一个是作为Web引用添加的。我不记得为什么一个被添加为网络参考,但也许是因为我无法让它工作!
一个Web服务的现有服务引用工作正常,因此它不是.net版本问题。
我可以成功为第二个Web服务创建服务引用,但没有一个方法可用。 .wsdl显示模式,但Reference.vb仅显示命名空间,而不显示任何方法。
为了澄清,这些是两个不同的第三方Web服务提供商。
我们希望转到服务参考,以便我们可以更好地控制配置,因为我们遇到了各种超时问题。
之前有人遇到过这个问题吗?
修改
地址上有两个服务是否重要?
修改
我正在使用.net 3.5和VS2008。
alt text http://img139.imageshack.us/img139/719/addservicereference.gif
答案 0 :(得分:10)
添加服务参考功能是众所周知的猪并且是错误的 - 我大部分时间都在使用它,但偶尔我遇到的问题是它生成的代码是这样的(即不存在)或者它不能重用它应该做的类型。
你应该尝试使用svcutil命令行工具(打开一个VS命令提示符来运行它),虽然它类似于VS的参考功能实际上是一个完全不同的代码库。您可以使用它来生成代理,所有客户端类型等,就像使用服务引用功能一样。
最重要的是 - 它似乎几乎一直在工作 - 只要服务本身是理智的。
答案 1 :(得分:1)
当你说“方法不可用”时,你究竟是什么意思?
许多人说这样的事情都希望这些方法与“添加Web引用”的方式完全相同。但他们是不同的。请参阅“How to Consume a Web Service”。
答案 2 :(得分:0)
我怀疑它正在尝试重复使用其他参考中的类型。单击高级...并删除“在引用的程序集中重用类型”框。您还应确保服务名称是唯一的,以避免冲突。
答案 3 :(得分:0)
您是否尝试将引用添加到C#项目而不是VB.NET项目?
我注意到你服务上的所有方法都被命名为“getXXX”,也许它与VB.NET生成器上的一些“智能”处理冲突。
尝试创建新的C#项目并添加服务引用。
答案 4 :(得分:0)
虽然是一篇旧帖子,但只想分享我的经验,以便今天可能对某人有所帮助。
与在Java,Phython或Ruby等平台上开发的Web服务进行通信时,可能导致由于合规性问题(WS-I互操作性标准)而无法生成Stub / Proxy类。您可能会遇到以下错误:
无法为服务引用生成代码 ServiceReferenceName 。有关详细信息,请查看其他错误和警告消息...
当然,使用svcutil.exe
可以获得实际的错误详细信息,在这种情况下,错误可能类似于:
错误:无法导入wsdl:portType
最好使用 Web服务参考来获取此类服务,而不是服务参考。 (添加服务参考 - >高级 - >添加Web参考...)
如果您喜欢使用XML& WSDL你可以继续使用绑定&修复问题端口类型。可能是进口和如果我上次正确记得错误,我需要更正,以便修复它以使其与服务参考选项一起使用。