1

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

我的 webconfig 只包含:

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

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

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

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

4

1 回答 1

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" />

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

于 2013-06-07T08:48:24.313 回答