Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从现有WCF服务创建单个WSDL文件?_Wcf_Visual Studio 2010_Soap_Wsdl - Fatal编程技术网

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

如何从现有WCF服务创建单个WSDL文件?,wcf,visual-studio-2010,soap,wsdl,Wcf,Visual Studio 2010,Soap,Wsdl,如何从现有WCF服务创建单个平面WSDL文件(内部没有外部引用)?此WSDL将被使用(导入)到只支持BasicHttpBinding的旧编程技术中。请把你的答案告诉初学者。我也必须这样做。我使用了WSDLExtras库。没什么大不了的 以下是使用它的逐步说明: 从下载WCFExtras,将其解压缩并在VS中添加对其的引用 添加对Web.config/App.config的引用,如下所示: <system.serviceModel> <extensions>

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

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

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

  • 从下载WCFExtras,将其解压缩并在VS中添加对其的引用

  • 添加对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>
    
  • 为您的服务端点使用endpointbehavior

    <endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
    
    
    
  • 这对我很管用。您还可以从WCFExtras项目页面下载完整示例:

    编辑:
    为了完整性:您可以使用Irwins答案中所述的“?singleWsdl”查询参数,因为.NET 4.5。有关更多详细信息,请参阅他发布的链接。

    您现在可以在.net 4.5(beta版)中以本机方式完成此操作。有一个选项(?singleWsdl而不是?wsdl)告诉服务在单个wsdl文档中输出所有内容。关于新内容的更多信息:

    如果我们无法访问源代码进行这些修改,该怎么办?@Sebastien,我建议创建另一个WCF服务,作为您的客户端和您想要使用但无法修改的服务之间的中介。然后您可以完全控制中介的WSDL。或者要求其他服务的开发人员为旧的SOAP工具包提供“向后兼容性”。我选择了第一个选项。@Sam这是一个看似简单的工作。相反,我编写了一个简短的python脚本来扁平化其中一个WSDL。它并不完美,但我会不断改进,并欢迎任何建议:+1有人应该在VisualStudio中实现“导出WSDL”上下文菜单选项。右键单击服务库项目,导出WSDL,检查一些首选项并另存为。为什么WSDL文件没有像项目的任何其他组件一样处理?在IWsdlExportExtension事件中,您实际上需要首先运行代码。singleWsdl工作得非常好。这应该是最好的答案。
    <endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">