如何从现有的WCF服务创建单个WSDL文件?

Sam*_*Sam 6 wcf soap wsdl visual-studio-2010

如何从现有WCF服务创建单个平面WSDL文件(没有来自内部的外部引用)?此WSDL将被使用(导入)为仅支持BasicHttpBinding的旧编程技术.请解答您对初学者的回答.

Irw*_*win 21

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

  • +1有人应该在Visual Studio中实现"导出WSDL"上下文菜单选项.右键单击服务库项目,导出WSDL,检查一些首选项和另存为.为什么WSDL文件不像项目的任何其他组件那样对待? (6认同)

Phi*_*ohl 13

我也必须这样做.我使用了WSDLExtras库.这不是太大的交易.

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

  1. 这里下载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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将扩展添加到端点行为并将singleFile属性设置为true

    <endpointBehaviors>
         <behavior name="singleFileEndpointBehavior">
             <wsdlExtensions singleFile="True" />
         </behavior>
    </endpointBehaviors>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将endpointbehavior用于服务端点.

    <endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
    
    Run Code Online (Sandbox Code Playgroud)

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

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