【问题标题】:How to create a single WSDL file from existing WCF service?如何从现有的 WCF 服务创建单个 WSDL 文件?
【发布时间】:2011-03-07 06:39:57
【问题描述】:

如何从现有 WCF 服务创建单个平面 WSDL 文件(内部没有外部引用)?此 WSDL 将用于(导入)到仅支持 BasicHttpBinding 的旧编程技术中。请将您的答案发给初学者。

【问题讨论】:

    标签: wcf visual-studio-2010 soap wsdl


    【解决方案1】:

    您现在可以在 .net 4.5(测试版)中本地执行此操作。有一个选项(?singleWsdl 而不是?wsdl)用于告诉服务在单个 wsdl 文档中输出所有内容。更多关于新东西的信息在这里:http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx

    【讨论】:

    • +1 应该有人在 Visual Studio 中实现“导出 WSDL”上下文菜单选项。右键单击服务库项目,导出 WSDL,检查一些首选项并另存为。为什么 WSDL 文件不像项目的任何其他组件一样对待?
    • 如果发生 IWsdlExportExtension,您实际上需要先运行代码。
    • ?singleWsdl 完美运行。这应该是最好的答案。
    【解决方案2】:

    我也必须这样做。我使用了 WSDLExtras 库。这没什么大不了的。

    以下是使用它的分步说明:

    1. here 下载 WCFExtras,解压并在 VS 中添加对它的引用。

    2. 像这样添加对 Web.config/App.config 的引用:

      <system.serviceModel>
          <extensions>
              <behaviorExtensions>
                  <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
              </behaviorExtensions>
          </extensions>
      </system.serviceModel>
      
    3. 将扩展添加到您的端点行为并将singleFile 属性设置为true

      <endpointBehaviors>
           <behavior name="singleFileEndpointBehavior">
               <wsdlExtensions singleFile="True" />
           </behavior>
      </endpointBehaviors>
      
    4. 为您的服务端点使用端点行为。

      <endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
      

    这对我来说很好。您还可以从 WCFExtras 项目页面下载完整示例:ProjectPage

    编辑: 为了完整起见:您可以使用 ''?singleWsdl'' 从 .NET 4.5 开始的查询参数,如 Irwins 回答中所述。有关详细信息,请参阅他发布的链接。

    【讨论】:

    • 如果我们无法访问源代码来进行这些修改怎么办?
    • @Sebastien,我建议创建另一个 WCF 服务作为您的客户端和您要使用但无法修改的服务之间的中介。然后,您可以完全控制中介的 WSDL。或者要求其他服务的开发人员为旧的 SOAP 工具包提供“向后兼容性”。我选择了第一个选项。
    • @Sam 对于看似简单的事情,这需要做很多工作。相反,我编写了一个简短的 Python 脚本来展平其中一个 WSDL。它并不完美,但我会不断改进并欢迎任何建议:github.com/sebmartin/FlatWSDL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多