如何从现有WCF服务创建单个WSDL文件?
如何从现有WCF服务创建单个平面WSDL文件(内部没有外部引用)?此WSDL将被使用(导入)到只支持BasicHttpBinding的旧编程技术中。请把你的答案告诉初学者。我也必须这样做。我使用了WSDLExtras库。没什么大不了的 以下是使用它的逐步说明:如何从现有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>
<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>
<endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
为了完整性:您可以使用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">