IMetadataExchange端点实际上做了什么?

时间:2010-07-05 21:08:04

标签: asp.net wcf

我正在开发一个使用ASP.NET安全模型的Web服务(即将AspNetCompatibilityRequirements设置为允许)。像许多其他人一样,我得到一个错误,说明需要匿名访问,因为mexHttpBinding需要它,并且解决它的唯一方法是从每个服务中删除mex端点,如下所述:

WCF - Windows authentication - Security settings require Anonymous

我认为通过删除mex端点,我将无法再生成WSDL或从Visual Studio添加对服务的引用,但令我惊讶的是一切仍然有效。我快速搜索了“mex绑定”,但大多数网站只是说它是“元数据交换”,而没有详细说明它实际上做了什么。

有谁能告诉我去除mex绑定的副作用是什么?

2 个答案:

答案 0 :(得分:0)

如果您的WCF服务未公开服务元数据,则无法在Visual Studio(添加服务引用)中添加服务引用,也不能向其他客户端查询其服务以获取其方法和数据需要。

删除元数据交换(mex)基本上使服务“不可见”,几乎 - 潜在的调用者必须找到其他方式(例如,通过提供WSDL文件,或通过获取具有客户端的类库程序集,他可以关于服务可以做什么,以及如何做。

这可能适用于高风险环境,但大多数情况下,能够查询服务并让它通过元数据描述自己是您想要启用的。这实际上是基于SOAP的服务的主要优势之一 - 凭借元数据,它可以描述自身,操作,所需的所有数据结构。该功能用于使调用该服务变得非常容易 - 您只需指向mex端点,就可以找到有关该服务的所有信息。

答案 1 :(得分:0)

如果没有元数据交换,您将无法使用svcutil.exe自动生成代理类。