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

Nib*_*Pig 1 wcf wsdl mex

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

我的webconfig只包含:

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

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

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

我正在使用basichttpsbinding,如果这有任何区别.

Cod*_*ter 5

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

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

httpGetEnabled属性允许发布WSDL元数据.如mexHttpBinding文档和入门中所示,如果要公开MEX,还必须公开可以访问的MEX端点:

<!-- the mex endpoint is explosed[sic] at         
http://localhost/servicemodelsamples/service.svc/mex -->

<endpoint address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />
Run Code Online (Sandbox Code Playgroud)

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