【问题标题】:WCF Odata - Disable meta data ($metadata)?WCF Odata - 禁用元数据 ($metadata)?
【发布时间】:2016-06-10 12:17:22
【问题描述】:

我有一个自托管 OData WCF 数据服务的 c# 应用程序。

主机的类型为 DataServiceHost,并在代码中以编程方式配置,而不是使用配置文件。

通过使用 SSL 和基本身份验证的 webHttpBinding 连接到服务。我的服务侦听端口 1234。

当客户端浏览到https://localhost:1234$metadata 时,他们可以访问服务的 xml 元数据。

我现在想阻止对元数据的访问,但不知道如何禁用它?

有谁知道在上述情况下如何禁用对 $metadata 的访问?

【问题讨论】:

    标签: c# wcf odata


    【解决方案1】:

    我终于找到了一种方法......

    // Disable mex ($metadata)
    ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
    if (smb == null)
    {
        smb = new ServiceMetadataBehavior();
        smb.HttpsGetEnabled = false;
    }
    host.Description.Behaviors.Add(smb);
    
    host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, 
                    MetadataExchangeBindings.CreateMexHttpsBinding(),
                    "$metadata");
    

    我多次尝试设置 ServiceMetadataBehavior,但没有任何效果。让HttpsGetEnabled = false 生效的技巧是创建一个名为“$metadata”的元数据端点。

    如果您不创建 mex 端点,DataServiceHost 似乎只是使用自己的元数据端点并忽略您的行为设置。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2013-11-17
      • 1970-01-01
      • 2011-11-20
      相关资源
      最近更新 更多