代码之家  ›  专栏  ›  技术社区  ›  ScottE

.NET Web服务:无法添加服务引用,只能添加Web引用

  •  13
  • ScottE  · 技术社区  · 14 年前

    我有一个使用Web服务的现有项目。一个作为服务引用添加,另一个作为Web引用添加。我不记得为什么要添加一个作为Web引用,但可能是因为我无法让它工作!

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

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

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

    我们希望转移到服务引用,这样我们就可以更好地控制配置,因为我们有各种超时问题。

    有人以前见过这个吗?

    编辑

    地址上有两个服务中心有关系吗?

    编辑

    我使用的是.NET 3.5和VS2008。

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

    5 回复  |  直到 11 年前
        1
  •  10
  •   Andras Zoltan    14 年前

    添加服务引用功能是一个臭名昭著的pig,而且有问题——我大多数时候都使用它,但有时我遇到问题,它生成的代码要么像这样(即不存在),要么它不在应该重用的地方重用类型。

    您应该尝试使用svcutil命令行工具(打开vs命令提示符来运行它),尽管它与vs的引用功能类似,但实际上是完全不同的代码库。您可以使用它生成代理、所有客户端类型等,就像服务引用功能一样。

    最重要的是,只要服务本身是健全的,它几乎总是可以工作的。

        2
  •  1
  •   John Saunders Tony    14 年前

    当你说“方法不可用”时,你的确切意思是什么?

    许多这样的人都希望这些方法与“添加Web引用”完全相同。但它们是不同的。见“ How to Consume a Web Service “。

        3
  •  0
  •   Marc Gravell    14 年前

    我怀疑它试图重新使用另一个引用中的类型。单击高级…并删除“引用程序集中的重用类型”框。您还应该确保服务名是唯一的,以避免冲突。

        4
  •  0
  •   Fábio Batista Raza Ahmed    14 年前

    是否尝试将引用添加到C项目而不是vb.net项目?

    我注意到您服务上的所有方法都被命名为“getxxx”,可能它与vb.net生成器上的一些“智能”处理冲突。

    尝试创建一个新的C项目并添加服务引用。

        5
  •  0
  •   Mobiletainment    11 年前

    虽然是一篇老文章,但只想分享一下我的经历,让它对今天的某个人有所帮助。

    当与在Java、Python或Ruby等平台上开发的Web服务进行通信时,可能是由于 合规性问题 (WS-I互操作性标准)。您可能会遇到以下错误:

    未能为服务引用生成代码 服务引用名称 . 有关详细信息,请查看其他错误和警告消息…

    您可以通过使用获得的实际错误详细信息 svcutil.exe 当然,在这种情况下,错误可能看起来像:

    错误:无法导入wsdl:porttype

    最好还是一起去 Web服务引用 为此类服务而不是 服务参考 .(添加服务引用->高级->添加Web引用…)

    如果您热衷于使用XML&wsdl,那么您可以继续使用binding&porttype来解决这个问题。如果我从上次浪费时间修复它以使其与服务引用选项一起工作,那么可能需要更正导入和包含内容。