从webHttpBinding端点获取元数据

在参考我之前的问题时 ,我想知道如何从客户端应用程序中提取WCF服务的信息,以了解如果服务只公开一个使用webHttpBinding的端点,那么会暴露哪些方法/类型?

总而言之,在我之前的问题中,我开始知道使用webHttpBinding的端点不会在生成的WSDL中暴露,因为它将是一个JSON端点并且只是不兼容。

WebHttpBinding是一个基于REST的绑定 – 与SOAP相反,REST不会像WSDL / XSD 那样公开元数据。

目前无法从REST端点提取元数据。 正在进行一些努力来为REST建立一个类似WADL(Web应用程序描述语言)的构造 – 但这种方法还远未达到标准化。

现在,使用REST端点,您必须自己弄清楚,或者您需要由服务提供商提供一些文档,例如静态HTML页面或其他东西。

.NET 4确实提供了某种程度的自动生成的帮助页面 – 有关详细信息,请参阅此博客文章或MSDN文档 。 但它仍然远不如WSDL / XSD那样正式化和机器可解释。

我想知道为什么REST样本会告诉你暴露MEX端点。 它不是必需的,这里是如何干净地删除它:

  1. 从配置文件的服务部分删除MEX端点。

  2. 删除配置文件的服务行为部分中启用服务元数据的行。

  3. 编辑Visual Studio项目(假设它是一个WCF服务库)并删除该行:

    /客户端: “WcfTestClient.exe”

如果您有其他非rest服务,您将希望留下最后两个部分。 您必须在禁用MEX时删除WCF客户端,否则如果它无法枚举项目中的任何服务(无论它们是否具有任何有用的元数据),它将在调试期间进行投诉。