【问题标题】:Consuming an Axis-generated web service from a VS2008 solution in c#在 c# 中使用 VS2008 解决方案中的 Axis 生成的 Web 服务
【发布时间】:2009-09-25 15:51:40
【问题描述】:

我正在尝试向 Visual Studio 2008 解决方案添加对外部 Axis 生成的 Web 服务的 Web 引用。 我收到的 url 指向我可以通过浏览器成功访问的 WSDL,并且我看到了所有 WService 详细信息。使用的 Axis 版本是 1.4。

但是如果我运行 wsdl.exe 或者当我在 VS2008 中添加引用时,我可以看到左侧的方法列表,但我收到一条错误消息:


URL http://............?wsdl 处的文档未被识别为已知文档类型。

每种已知类型的错误消息可能会帮助您解决问题:

  • 来自“DISCO 文档”的报告是“无法找到位于 URL http://.........?wsdl 的发现文档。”。
    • 无法识别文档格式。
  • 来自“WSDL 文档”的报告是“XML 文档 (510, 62) 中存在错误。”。
    • 命名空间前缀“impl:urn”未定义。
  • 来自“XML Schema”的报告是“W3C XML Schema 的根元素应该是,它的命名空间应该是 'http://www.w3.org/2001/XMLSchema'。”

我无法继续。我在 SO 上看到了其他帖子,但它们都指的是已经添加了网络参考的情况。

非常感谢!

A.

编辑: 谢谢大家,实际上我设法“手动”解决了这个问题,正如 dovholuk 所建议的那样:我捕获了 wsdl,将它本地保存在文件系统中,然后我手动修改它,直到 wsdl.exe 能够生成类。然后我在项目中添加了类,并设法调用了Web服务。

Ciao 安德烈亚

【问题讨论】:

    标签: c# visual-studio-2008 web-services axis


    【解决方案1】:

    这是我在使用轴 1.4 时遇到的常见问题。我个人总是手动编写我的 wsdl 和 xsd 代码,而不是出于这个和其他原因使用发射功能......

    如果您打开 ?wsdl 并开始解析,我敢打赌您那里有一些“空”的枚举。比如:

    <xs:simpleType name="MyType">
    </xs:simpleType>
    

    我真的只是在这里猜测,因为您没有发布 wsdl(不确定是否可以?)但是当我编写 wsdl/xsd 并且对简单类型有限制时,我得到了这种确切的行为......例如:

    <xs:simpleType name="IpAddress">
      <xs:restriction base="xs:string">
        <xs:pattern value="\d*"> (note this is not 'correct' i'm just 'for instancing')
      </xs:restriction>
    </xs:simpleType>
    

    (如果那是无效的 xsd,请不要杀我 - 我只是从记忆中走出来...... :))

    Axis 会吸收它,创建对象,但是当它使用 ?wsdl 发出时,它会显示“无效”......

    所以我的建议是梳理那个 wsdl - 特别是“不完整”模式定义的类型部分...将它们从您的 java 中取出并“再试一次”,直到它在 c# 中工作......

    不知道这是否有帮助 - 但如果您需要任何其他想法,请回帖...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多