【问题标题】:wcf Extract wsdl from WCF Service with Flattened WSDLwcf 使用扁平化 WSDL 从 WCF 服务中提取 wsdl
【发布时间】:2009-10-21 17:56:41
【问题描述】:

我有一个 wcf Web 服务,我需要向客户端提供 wsdl 文件。

之前我在 .dll 上使用了 svcutil,一切都很好。

不过,最近我实现了工厂来扁平化 wsdl 文件(回复:http://wcfextras.codeplex.com/)。

我的问题是:是否在 .svc 上使用 svcutil 来提取扁平化的 .WSDL 文件,或者在本地 webdev 服务器中运行以检索 .WSDL 文件时以某种方式访问​​ Web 服务?

据我所知,如果我要导航到本地 Web 开发服务器 (http://localhost:2916/Service.svc?wsdl),并且如果我要查看源代码并将其保存为 .wsdl,那么这是错误的并且不会提供所有相关信息。

注意:请参阅下文了解如何在 .svc 文件中使用 Factory....

<% @ServiceHost Factory="CompanyName.ServiceModel.Extensions.Description.FlatWsdlServiceHostFactory" language=c# Service="CompanyName.WebServices.Service"%> 

谢谢, 史蒂文

【问题讨论】:

    标签: wcf wsdl


    【解决方案1】:

    是的,您应该仍然可以使用svcutil 从您的服务中提取 WSDL,即使您安装了一个可以使 WSDL 变平的扩展。

    要从正在运行的服务下载元数据文档,请使用以下命令:

    svcutil /t:metadata http://service/metadataEndpoint
    

    您需要将您的 URL 指向配置中定义的元数据端点,例如定义为使用“mexHttpBinding”或“mexTcpBinding”和“IMetadataExchange”协定的端点。

    如果您没有定义任何元数据交换端点,显然您将无法检索该信息。

    【讨论】:

    • 您好 Marc,感谢您的帮助.... 快速提问,我能够添加 mexHttpBinding 并使用 svcutil /t:metadata 获取 wsdl 你知道它为什么会创建两个文件吗? filename1.wsdl filename.wsdl 名称中带有“1”的文件有很多soap:binding soap:body soap:operation, ext... 而名称中没有“1”的文件实际上只包含wsdl 和xsd 标签。我会将两者都提供给客户吗?再次感谢你的帮助。史蒂文。
    • 如果我没记错的话,我相信 WCF 运行时会为每个命名空间生成一个 WSDL。您可以将 XSD 展平为 WSDL,但您似乎无法“合并”具有不同名称空间的两个 WSDL 部分。是的,我相信您需要两个文件才能正常工作(一个引用另一个)
    • 嘿,马克再次感谢。好消息,客户已决定他们已准备好直接使用 Web 服务 :) 不再需要我生成(尽管在您的帮助下我确实学到了很多东西)一切顺利。史蒂文
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多