【问题标题】:What's does IMetadataExchange endpoint actually do?IMetadataExchange 端点实际上是做什么的?
【发布时间】:2010-07-05 21:08:03
【问题描述】:

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

WCF - Windows authentication - Security settings require Anonymous

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

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

【问题讨论】:

    标签: asp.net wcf


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-11
        • 2010-11-26
        • 2015-06-23
        • 2017-12-26
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多