从webHttpBinding端点获取元数据

问题描述:

参考我的previous question,我想知道如何从客户端应用程序中提取WCF服务的信息,以便知道如果服务仅公开一个端点时会公开哪些方法/类型使用webHttpBinding?从webHttpBinding端点获取元数据

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

WebHttpBinding是一个基于REST的绑定--REST确实而不是公开了与SOAP相反的WSDL/XSD之类的元数据。

目前无法从REST端点提取元数据。目前正在努力为REST建立一个名为WADL (Web Application Description Language)的类似构造 - 但这还远远不够标准化。现在,使用REST端点,您必须自己弄清楚,或者您需要在服务提供商提供的文档上提供一些文档。一个静态的HTML页面或其他东西。

.NET 4确实提供了一定级别的自动生成的帮助页面 - 有关更多信息,请参阅this blog postMSDN docs。但它仍然远不如WSDL/XSD那样具有形式化和机器可解释性。

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

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

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

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

    <StartArguments> /client:"WcfTestClient.exe” </StartArguments >

如果你有其他非休息服务,你会想离开最后2部分礼物。禁用MEX时,必须删除WCF客户端,否则在调试过程中如果无法枚举项目中的任何服务(无论它们是否具有任何有用的元数据),它将发出抱怨。