我正在尝试将外部Axis生成的Web服务的Web引用添加到Visual Studio 2008解决方案中。 我收到的URL指向我可以通过浏览器成功访问的WSDL,我看到了所有WService详细信息。使用的Axis版本是1.4。
但是如果我运行wsdl.exe或者在VS2008中添加引用时我可以在左侧看到方法列表,但是我收到一条错误声明:
网址http://............?wsdl上的文档未被识别为已知文档类型。
每种已知类型的错误消息可以帮助您解决问题:
我无法继续。我在这里看到了其他帖子,但所有这些帖子都指的是已经添加了网络参考的情况。
非常感谢提前!
一个。
编辑: 谢谢大家,实际上我设法解决了“手动”的问题,因为在某种程度上是由dovholuk建议的:我把wsdl限制,将其保存在文件系统中,然后我手动修改它,直到wsdl.exe能够生成课程。然后我在项目中添加了该类,并设法调用了Web服务。
侨 安德烈
答案 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#中工作....
不知道这是否有帮助 - 但如果您需要任何其他想法,请回帖......