【发布时间】:2009-03-17 17:24:55
【问题描述】:
根据 W3 的 WSDL 规范,可以将“wsdl:document”标签添加到 WSDL 输出中,以便使用该 Web 服务的人对该 Web 服务有更好的解释/文档。
有谁知道如何让 WCF 使用这些 cmets/描述,或者如何用 C# 编写将这些 cmets 作为 wsdl 的一部分导出的代码?
谢谢,迈克尔
【问题讨论】:
根据 W3 的 WSDL 规范,可以将“wsdl:document”标签添加到 WSDL 输出中,以便使用该 Web 服务的人对该 Web 服务有更好的解释/文档。
有谁知道如何让 WCF 使用这些 cmets/描述,或者如何用 C# 编写将这些 cmets 作为 wsdl 的一部分导出的代码?
谢谢,迈克尔
【问题讨论】:
似乎 GitHub 上的社区项目 WCFExtras 提供了一种解决 .NET 3.5 限制的方法。
【讨论】:
如果您在使用 [ServiceContract] 和 [OperationContract] 装饰的 C# 类中进行设计/编码,那么我不知道有任何方法可以将您可能拥有的关于这些类和方法的文档导出到 WSDL,不幸的是。
我也对此感到震惊 - 我希望我的类和方法上的任何 /// cmets 会出现在 WSDL 中 - 不走运 :-(
我们现在的解决方案是: 1) 我们使用 C# 中的所有操作创建服务接口的基本“模型” 2)我们把它编译成一个程序集 3) 我们从该程序集中提取元数据(WSDL、XSD),然后丢弃 C#“原型” 4) 我们手动将 cmets (xs:annotation/xs:documentation) 添加到 WSDL 和 XSD 5) 从现在开始,WSDL/XSD 是主要的——我们从这些描述中生成我们的接口
麻烦又烦人,但对我们来说还算可以。
我当然希望 VS2010 / WCF 4.0 能给我们带来更多这方面的支持!!
马克
【讨论】:
http://msdn.microsoft.com/en-us/library/aa717040.aspx
我认为这可以满足您的需求,但它仅适用于 .NET 客户端。
【讨论】:
不幸的是,WCF 不会自己做。有一些 WSDL 生成的扩展点可以用来至少部分完成此任务:查找 IWSDLExportExtension 接口。
我有一个small example,关于如何在我的网站上实现一个简单的 WSDL 导出扩展,这可能会帮助您入门。
【讨论】:
[WebService(Namespace = "XXXXXXXXXXXXX", **Description**="V0.2.42")]
描述在 .NET 4.0 中放了任何你想要的东西,不确定是哪个版本...可能回答得有点晚了,但答案似乎比向 WSDL 中添加一个只有开发人员才能看到的简介所需的复杂。
【讨论】: