在c#中使用VS2008解决方案中的Axis生成的Web服务

时间:2009-09-25 15:51:40

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

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

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


网址http://............?wsdl上的文档未被识别为已知文档类型。

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

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

我无法继续。我在这里看到了其他帖子,但所有这些帖子都指的是已经添加了网络参考的情况。

非常感谢提前!

一个。

编辑: 谢谢大家,实际上我设法解决了“手动”的问题,因为在某种程度上是由dovholuk建议的:我把wsdl限制,将其保存在文件系统中,然后我手动修改它,直到wsdl.exe能够生成课程。然后我在项目中添加了该类,并设法调用了Web服务。

侨 安德烈

1 个答案:

答案 0 :(得分: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#中工作....

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