WSDL.exe生成服务代理框架

来源:互联网 发布:淘宝卖家怎么改地址 编辑:程序博客网 时间:2024/05/16 00:25

今天下午,终于用这个WSDL.exe生成代理框架了。

 

我有三个文件 stockquoteservice.wsdl 主文件 引用了(import) stockquote.wsdl ,后者又引用了(import) stockquote.xsd

 

 

 

刚开始的时候 我直接在命令行里 敲 “wsdl  目录/tockquoteservice.wsdl ” 出现错误

 

说导入的命名空间下的一个类型没有定义,导入的命名空间显得服务描述已经丢失    

 

我刚赶紧检查一遍wsdl定义 好像也没什么错误  难道wsdl.exe只支持简单的 一个文件的契约定义,我想当然是不会

 

然后 我 查阅了 impot 相关资料 找到一篇(http://www.ibm.com/developerworks/cn/webservices/ws-tip-imports.html)

里面说:import 语句有两种类型:XSD 导入和 WDSL 导入

 

<xsd:import namespace="urn:listing3" schemaLocation="listing3.xsd">

 


<wsdl:import namespace="urn:listing5" location="listing5.wsdl"/>

 

 

前者的schemaLocation 属性是个可选属性,即使你用它提供了文件位置,XML 解析器也能够忽略该位置,schemaLocation 属性只不过是一个提示(hint)。XSD import 语句的主要目的是导入命名空间,而不是告诉您在命名空间的何处可以找到这些声明。

 

后者中WSDL 导入的 location 属性与 XSD 导入的 schemaLocation 属性相似,只不过是一个提示。不同的是,WSDL 导入的 location 属性是必须给出的,而不是可选属性。

 

看到这里 我有点明白了 原来我一直以为 wsdl.exe 工具 会根据schemaLocation 和location自动载入所应用的wsdl和xsd,看来不是,这两个属性仅仅是提示。

 

然后我就试着在命令行里把三个文件都列出来:

 

“wsdl  目录/tockquoteservice.wsdl  目录/tockquote.wsdl  目录/tockquote.xsd”

 

这次OK了。

生成的c#代码如下:

 

 

原创粉丝点击