首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用元数据($metadata)?

禁用元数据($metadata)?
EN

Stack Overflow用户
提问于 2016-06-10 12:17:22
回答 1查看 496关注 0票数 1

我有一个c#应用程序,它由self托管OData WCF数据服务。

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

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

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

我现在想阻止对元数据的访问,但无法解决如何禁用元数据?

在上述场景中,有人知道如何禁用对$metadata的访问吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 19:23:31

我终于找到了办法.

代码语言:javascript
复制
// 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37748094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档