【发布时间】:2011-02-01 08:34:46
【问题描述】:
什么是 WSDL?我在谷歌搜索时找不到很多参考资料...
我如何知道我的 WCF Web 服务的 WSDL URI?
【问题讨论】:
什么是 WSDL?我在谷歌搜索时找不到很多参考资料...
我如何知道我的 WCF Web 服务的 WSDL URI?
【问题讨论】:
一些关于 WSDL 的好教程:
如果您的 Web 服务地址是
http://services.aonaware.com/DictService/DictService.asmx
您可以像这样访问您的 wsdl 文件:
http://services.aonaware.com/DictService/DictService.asmx?WSDL
【讨论】:
WCF 服务的 WSDL 通常通过将?wsdl 添加到服务的 HTTP(S) URL 来检索。但是您必须在ServiceMetadataBehavior 中允许此WSDL 检索。如果您使用 WCF 服务应用程序项目模板,WCF 4 默认允许所有基于 HTTP 的服务这样做:
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
此外,通过在浏览器中输入基于 HTTP(S) 的服务 URL,您应该会收到带有 WSDL 超链接的帮助页面。
在 WCF 3.x 中,您必须手动允许它并在服务定义中使用行为配置。
<behaviors>
<serviceBehaviors>
<behavior name="myConfig">
<!-- requires HTTPS to be configured for your service -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="..." behaviorConfiguration="myConfig">
...
</service>
</services>
只能通过 HTTP(S) GET 以这种方式检索 WSDL。您还可以使用 WS-MetadataExchange 协议从 Metadata endpoint 检索服务元数据 - 它还支持不同的传输协议。 WCF 中的 WSDL 仅适用于 SOAP 服务。
【讨论】:
WCF 中的 WSDL URI 用于创建可用于与客户端通信的 代理类。
WSDL URI 获取/调用元数据。客户端构建代理类需要了解WCF中使用的服务契约、操作契约、方法以及WCF方法中的参数,没有这些信息客户端将无法生成 代理类,同时在应用程序中托管 WCF 服务,因此元数据实际上负责在应用程序配置文件中生成所有这些信息。
【讨论】: