2014-01-22 104 views
0

我有一个WCF数据服务(5.6)在天青云服务中的Webrole中运行。我不想公开元数据,但无论我如何设置行为,它仍然会返回元数据。保护WCF数据服务元数据

这是从web.config

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false before deployment --> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. 
       Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

的片段......

任何帮助是极大的赞赏

阿尔贝托

回答

0

如果你不想暴露元数据,请尝试完全删除<serviceMetadata>节点。

+0

谢谢你的回答。是的,我试过了。我实际上尝试了更多。不管它在我放置$元数据时仍然显示元数据。我想知道它是否与绑定有关... –

+0

您是否也可以显示您的“mex”端点?它是否通过名称引用“行为”?如果是这样,问题可能是您的'行为'标记没有'name'属性。 – Darren

+0

我已经把WCF数据服务搁置了,因为我认为WebApi将在我的项目中提供更多的灵活性。不,我不是通过名称来引用行为,而且我正在重新阅读绑定文档以查看我是否需要实际具体。感谢您的帮助。无论如何,我会将问题标记为已回答。 –

0

您选择的词似乎意味着您觉得元数据在某种程度上是敏感的,应该受到保护。这将是完全错误的。如果我可能会建议这可能是XY problem,你能否解释为什么你需要“保护”它?

如果您的需求包含安全性以外的其他方面,那么请不要忽视这一点,但无论您做什么,请记住,这些元数据在很大程度上使OData有用。得益于此,客户不需要重新定义数据模型(至少对于他们的DAL/DTO),而这些数据模型可以实时自动生成并与服务器保持同步。当手动完成时,这通常涉及到所有客户端软件开发人员的大量工作。