System.ServiceModel.Description.ServiceMetadataBehavior 提供对向服务添加元数据终结点的支持。 这些元数据终结点可以在具有 ?wsdl
查询字符串的 URL 上响应 HTTP GET 请求,并根据 WS-MetadataExchange (MEX) 规范响应 WS-Transfer GET 请求。 MEX 终结点可实现 System.ServiceModel.Description.IMetadataExchange 协定。
通过自定义绑定发布元数据
通过设置ServiceMetadataBehavior.HttpGetEnabled或ServiceMetadataBehavior.HttpsGetEnabled属性为true
来启用 HTTP GET 元数据终结点和 HTTPS GET 元数据终结点。 无法配置这些终结点的绑定。
但是,协定 IMetadataExchange 可与任何终结点一起使用,包括那些使用自定义绑定的终结点,因为 IMetadataExchange 终结点与任何其他 Windows Communication Foundation (WCF) 服务终结点相同。 如果您了解如何修改系统提供的绑定的配置,或者了解如何配置 System.ServiceModel.Channels.CustomBinding,则可以将绑定配置为与 IMetadataExchange 终结点一起使用。
通过自定义绑定检索元数据
可以使用标准的 HTTP get 或 HTTPS get 请求从 HTTP 和 HTTPS 的元数据终结点检索元数据。
若要从 MEX 元数据终结点检索元数据,通常可以使用 WCF 支持的标准 MEX 绑定之一。 有关详细信息,请参阅 System.ServiceModel.Description.MetadataExchangeBindings。 System.ServiceModel.Description.MetadataExchangeClient 类型和 Svcutil.exe 工具根据指定的元数据终结点地址自动选择其中之一的标准 MEX 绑定。
如果 MEX 元数据终结点使用与标准 MEX 绑定之一不同的其他绑定,则您可以使用代码或通过提供 MetadataExchangeClient 客户端终结点配置来配置由 IMetadataExchange 所使用的绑定。 Svcutil.exe 工具会自动从其配置文件加载客户端 IMetadataExchange 终结点配置,该配置的名称与元数据终结点地址的 URI 方案相同。
安全
通过自定义绑定发布元数据时,请确保绑定提供元数据所需的安全支持。 例如,为了防止信息泄露并确保客户端有权获取元数据,可以通过配置 IMetadataExchange 终结点来要求身份验证和加密,使元数据和应用程序更安全。 示例 自定义安全元数据终结点 演示了此方案。