.net web服务:无法添加服务引用,仅限web引用

时间:2010-03-04 15:03:54

标签: .net web-services

我有一个使用Web服务的现有项目。一个是作为服务引用添加的,另一个是作为Web引用添加的。我不记得为什么一个被添加为网络参考,但也许是因为我无法让它工作!

一个Web服务的现有服务引用工作正常,因此它不是.net版本问题。

我可以成功为第二个Web服务创建服务引用,但没有一个方法可用。 .wsdl显示模式,但Reference.vb仅显示命名空间,而不显示任何方法。

为了澄清,这些是两个不同的第三方Web服务提供商。

我们希望转到服务参考,以便我们可以更好地控制配置,因为我们遇到了各种超时问题。

之前有人遇到过这个问题吗?

修改

地址上有两个服务是否重要?

修改

我正在使用.net 3.5和VS2008。

alt text http://img139.imageshack.us/img139/719/addservicereference.gif

5 个答案:

答案 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你可以继续使用绑定&修复问题端口类型。可能是进口和如果我上次正确记得错误,我需要更正,以便修复它以使其与服务参考选项一起使用。