在 WCF 服务中,我删除了默认的 Mex 绑定(bind),并将默认服务行为中的 httpGetEnabled 属性设置为 false。
根据我的理解,该服务不允许下载 WSDL。但是,该服务的现有客户端可以正常工作。
现在,当我在 Internet Explorer 中浏览 .svc 时,它会提供 3 个建议来帮助我查看 .svc 文件的结构。
- 为服务创建行为。
- 在 serviceMetadata 元素中,创建 httpGetEnabled 属性并将其设置为 true。
- 创建一个 mex 绑定(bind)端点。即
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
现在让我回答我的问题。
当我设置 httpGetEnabled="true"时,我就可以下载 WSDL。 我在这里看不到 mex 端点的意义。
这里mex端点的真正意义是什么?当 httpGetEnabled 给我下载 WSDL 的选项时,创建 mex 端点的必要性是什么?
最佳答案
只有当您想使用 WS-MetadataExchange 而不是 WSDL 来获取服务元数据时,Mex 端点才会变得重要。您可以启用一个或另一个,或同时启用两个。
据我所知,svcutil.exe 可以使用 WSDL 或 mex,所以不用担心;但您的客户可能只支持其中之一。
关于.net - 了解 httpGetEnabled 和 Mex 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715982/