【问题标题】:WCF Service, how do I tell if I am publishing WSDL or MEX?WCF 服务,我如何判断我发布的是 WSDL 还是 MEX?
【发布时间】:2013-06-07 08:42:13
【问题描述】:

据我了解,MEX 和 WSDL 是发布元数据的两种不同方式。为了让客户选择他们喜欢的那个,我想启用两者。但我不完全确定如何。

我的 webconfig 只包含:

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

当浏览到它时会显示默认页面,并带有指向 serviceblahblah?wsdl 的链接,这表明我只发布了 WSDL。

我的问题是,这是否使用 MEX,如果不是,我如何也发布 MEX,我应该同时发布两者吗?

如果这有什么不同的话,我正在使用基本的 httpsbinding。

【问题讨论】:

    标签: wcf wsdl mex


    【解决方案1】:

    当浏览到它时会显示默认页面,并带有指向 serviceblahblah?wsdl 的链接,这表明我只发布了 WSDL。

    不,您只是访问 WSDL。您还希望在该 URL 上看到什么? ;-)

    httpGetEnabled 属性允许发布 WSDL 元数据。如mexHttpBinding 文档和Getting Started 所示,如果要公开 MEX,还必须公开一个 MEX 端点,然后您可以访问:

    <!-- the mex endpoint is explosed[sic] at         
    http://localhost/servicemodelsamples/service.svc/mex -->
    
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
    

    客户端在发现您的服务时,将首先尝试调用/mex 端点。如果未找到,他们将请求 WSDL。当您在 Visual Studio 中单击“添加服务引用”并输入纯服务 URL 时,您可以使用 Fiddler 看到这一点,我确信此行为记录在某处。

    【讨论】:

    • 太好了,这让它更清晰了。您是否也建议发布 MEX 端点?
    • @SLC 是的,(简而言之):MEX 可以公开比 WSDL 更详细的元数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多