3

我正在尝试向 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 上看到了其他帖子,但它们都指的是已经添加了网络参考的情况。

提前谢谢了!

一种。

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

乔安德里亚

4

1 回答 1

3

这是我在使用轴 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#中工作......

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

于 2009-09-26T14:55:50.900 回答