【发布时间】:2011-03-07 06:39:57
【问题描述】:
如何从现有 WCF 服务创建单个平面 WSDL 文件(内部没有外部引用)?此 WSDL 将用于(导入)到仅支持 BasicHttpBinding 的旧编程技术中。请将您的答案发给初学者。
【问题讨论】:
标签: wcf visual-studio-2010 soap wsdl
如何从现有 WCF 服务创建单个平面 WSDL 文件(内部没有外部引用)?此 WSDL 将用于(导入)到仅支持 BasicHttpBinding 的旧编程技术中。请将您的答案发给初学者。
【问题讨论】:
标签: wcf visual-studio-2010 soap wsdl
您现在可以在 .net 4.5(测试版)中本地执行此操作。有一个选项(?singleWsdl 而不是?wsdl)用于告诉服务在单个 wsdl 文档中输出所有内容。更多关于新东西的信息在这里:http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx
【讨论】:
我也必须这样做。我使用了 WSDLExtras 库。这没什么大不了的。
以下是使用它的分步说明:
从here 下载 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>
将扩展添加到您的端点行为并将singleFile 属性设置为true
<endpointBehaviors>
<behavior name="singleFileEndpointBehavior">
<wsdlExtensions singleFile="True" />
</behavior>
</endpointBehaviors>
为您的服务端点使用端点行为。
<endpoint address="YourEndPoint/Address" binding="YourBinding" behaviorConfiguration="singleFileEndpointBehavior" contract="IYourContract">
这对我来说很好。您还可以从 WCFExtras 项目页面下载完整示例:ProjectPage
编辑: 为了完整起见:您可以使用 ''?singleWsdl'' 从 .NET 4.5 开始的查询参数,如 Irwins 回答中所述。有关详细信息,请参阅他发布的链接。
【讨论】: