我的理解是,MEX和WSDL是两种不同的发布元数据的方式。为了让客户选择他们喜欢的那个,我想同时启用它们。但我不完全确定如何。
我的webconfig只包含:
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
当浏览到它时显示默认页面,其中包含指向serviceblahblah?wsdl的链接,这表明我只发布了WSDL。
我的问题是,这是使用MEX,如果不是我怎样才能发布MEX,我应该同时发布吗?
如果有任何不同,我正在使用basichttpsbinding。
答案 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查看此内容,并且我确定此行为已记录在某处。