2009-09-25 71 views
3

我试图将外部Axis生成的Web服务添加到Visual Studio 2008解决方案的Web引用。 我收到的网址指向了一个WSDL,我可以通过浏览器成功访问,并且可以看到所有的WService细节。使用的Axis版本是1.4。从C#中的VS2008解决方案中消费Axis生成的Web服务

但是,如果我跑Wsdl.exe用或当我在VS2008中添加引用,我可以看到左边的方法列表,但我得到一个错误,指出:


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

从每个已知类型的错误消息可能会帮助您解决问题:“在URL http://.........?wsdl发现文件找不到”从“DISCO文档”

  • 报告的。
    • 无法识别文档格式。
  • 来自'WSDL文档'的报告是'XML文档中存在错误(510,62)'。
    • 命名空间前缀'impl:urn'未定义。从XML架构“
  • 报告是“一个W3C XML架构的根元素应该是和它的命名应该是” http://www.w3.org/2001/XMLSchema“”。”

我不能继续。我在这里看到了其他职位上的SO,但他们都指的是在Web引用已经添加的情况。

很多感谢!

A.

编辑: 感谢球员,其实我管理的“手”来解决问题,因为在某些方面建议通过dovholuk:我capured的WSDL,在文件系统loccally保存它,然后我修改了它的手,直到wsdl.exe能够生成类。然后我在项目中添加了类,并设法调用Web服务。

侨 安德烈

回答

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不要杀我 - 我只是从内存中去...... :))

轴将在此吸,创建对象,但是当它得到它发出'无效'...

所以我的建议是梳理通过该wsdl - 特别是'不完整'模式定义的类型部分...把他们从你的Java和'尝试再',直到它在C#中工作....

不知道是否有帮助 - 但如果你需要任何其他想法,发回......