【发布时间】:2010-06-14 19:14:50
【问题描述】:
参考我的previous question,我想知道如果服务只公开一个使用 webHttpBinding 的端点,我将如何从客户端应用程序中提取 WCF 服务的信息以了解公开了哪些方法/类型?
总结一下,在我之前的问题中,我了解到使用 webHttpBinding 的端点不会暴露在生成的 WSDL 中,因为它是 JSON 端点并且不兼容。
【问题讨论】:
标签: c# wcf wcf-binding
参考我的previous question,我想知道如果服务只公开一个使用 webHttpBinding 的端点,我将如何从客户端应用程序中提取 WCF 服务的信息以了解公开了哪些方法/类型?
总结一下,在我之前的问题中,我了解到使用 webHttpBinding 的端点不会暴露在生成的 WSDL 中,因为它是 JSON 端点并且不兼容。
【问题讨论】:
标签: c# wcf wcf-binding
WebHttpBinding 是基于 REST 的绑定 - 与 SOAP 不同,REST 不会暴露像 WSDL/XSD 这样的元数据。
目前无法从 REST 端点提取元数据。正在努力为 REST 建立一个类似的构造,称为 WADL (Web Application Description Language) - 但还远未达到标准化。
目前,对于 REST 端点,您必须自己弄清楚,或者您需要服务提供商提供的一些文档,例如静态 HTML 页面或其他东西。
.NET 4 确实提供了某种程度的自动生成帮助页面 - 请参阅 this blog post 或 MSDN docs 了解更多信息。但它仍然远没有 WSDL/XSD 那样形式化和机器可解释。
【讨论】:
我想知道为什么 REST 示例会告诉您完全公开 MEX 端点。它不是必需的,这里是如何干净地删除它:
从配置文件的服务部分移除 MEX 端点。
在配置文件的服务行为部分删除服务元数据启用行。
编辑 Visual Studio 项目(假设它是 WCF 服务库)并删除以下行:
如果您有其他非休息服务,您将希望保留最后 2 个部分。禁用 MEX 时必须删除 WCF 客户端,否则如果无法枚举项目中的任何服务(无论它们是否有任何有用的元数据),它将在调试期间报错。
【讨论】: