WCF服务,如何判断我是否发布WSDL或MEX?

时间:2013-06-07 08:42:14

标签: wcf wsdl mex

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

我的webconfig只包含:

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

当浏览到它时显示默认页面,其中包含指向serviceblahblah?wsdl的链接,这表明我只发布了WSDL。

我的问题是,这是使用MEX,如果不是我怎样才能发布MEX,我应该同时发布吗?

如果有任何不同,我正在使用basichttpsbinding。

1 个答案:

答案 0 :(得分:5)

  

当浏览到它时显示默认页面,其中包含指向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查看此内容,并且我确定此行为已记录在某处。