通过引用我的previous question,我想知道如何从客户端应用程序中提取WCF服务的信息,以了解如果服务只公开一个使用webHttpBinding的端点,则会公开哪些方法/类型?
总而言之,在我之前的问题中,我发现使用webHttpBinding的端点不会在生成的WSDL中公开,因为它将是一个JSON端点并且只是不兼容。
答案 0 :(得分:11)
WebHttpBinding是一个基于REST的绑定 - REST 不暴露与SOAP相反的WSDL / XSD等元数据。
此时无法从REST端点提取元数据。正在为建立一个名为WADL (Web Application Description Language)的REST的类似构造进行一些努力 - 但这还远未达到标准化。
目前,使用REST端点,您必须自己弄明白,或者您需要提供服务提供商提供的一些文档,例如:一个静态的HTML页面。
.NET 4确实提供了一定级别的自动生成的帮助页面 - 有关详细信息,请参阅this blog post或MSDN docs。但它仍然远不如WSDL / XSD那样正式和机器可解释。
答案 1 :(得分:0)
我想知道为什么REST样本会告诉你暴露MEX端点。它不是必需的,这里是如何干净地删除它:
从配置文件的服务部分删除MEX端点。
删除配置文件的服务行为部分中启用服务元数据的行。
编辑Visual Studio项目(假设它是一个WCF服务库)并删除该行:
< StartArguments> /客户端: “WcfTestClient.exe” < / StartArguments>
如果您有其他非休息服务,您将需要留下最后2个部分。您必须在禁用MEX时删除WCF客户端,否则如果它无法枚举项目中的任何服务(无论它们是否具有任何有用的元数据),它将在调试期间进行投诉。