从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端点。 它不是必需的,这里是如何干净地删除它:
-
从配置文件的服务部分删除MEX端点。
-
删除配置文件的服务行为部分中启用服务元数据的行。
-
编辑Visual Studio项目(假设它是一个WCF服务库)并删除该行:
/客户端: “WcfTestClient.exe” StartArguments>
如果您有其他非rest服务,您将希望留下最后两个部分。 您必须在禁用MEX时删除WCF客户端,否则如果它无法枚举项目中的任何服务(无论它们是否具有任何有用的元数据),它将在调试期间进行投诉。
- WCF流长度
- 如何使用DataContractJsonSerializer将类类型而不是命名空间序列化为Json字符串
- 发布日志的WCF操作 – 它应该是回调吗?
- 内容类型为text / html; charset =响应消息的UTF-8与绑定的内容类型不匹配(text / xml; charset = utf-8)
- WCF返回ArrayOfKeyValueOfintstringKeyValueOfintstring 而不是List 和List instread of List
- 在IIS6下,jquery ajax发布到WCF服务的post数据(方法参数)在IE中被删除(除非fiddler正在运行)
- Wcf和接口作为参数
- WCF中的信息重用
- 在.NET 3.5中使用WCF DataContractJsonSerializer