在几个端点上限制对DataMember的访问

时间:2012-11-04 23:45:29

标签: c# wcf

请考虑以下dataContract类。 MyHiddenProperty是可选的DataMember -

[DataContract]
public class CompositeType
{        
    string stringValue = "Hello ";

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }

    [IgnoreDataMember] //for IRestricted
    [DataMember]//for IAllowed
    public string MyHiddenProperty { get; set; }
}

我需要确保MyHiddenProperty仅在一个端点公开,而在另一个端点受限制。

为此,我创建了两个不同的Service Contract

[ServiceContract]
public interface IAllowed
{
    [OperationContract]
    string GetData(int value);

    [OperationContract]
    //would expose MyHiddenProperty
    CompositeType GetDataUsingDataContract(CompositeType composite);

}

[ServiceContract]
public interface IRestricted
{
    [OperationContract]
    string GetData(int value);

    [OperationContract]
    //should not expose MyHiddenProperty
    CompositeType GetDataUsingDataContract(CompositeType composite);

}

通过以下方式展示它们 -

<endpoint address="allowedEndpoint" binding="basicHttpBinding" contract="WcfServiceLibrary1.IAllowed">
  <identity>
    <dns value="localhost" />
  </identity>
</endpoint>
<endpoint address="restrictedEndPoint" binding="basicHttpBinding" contract="WcfServiceLibrary1.IRestricted">
  <identity>
    <dns value="localhost" />
  </identity>
</endpoint>   

我理解WCF Authorization机制可以帮助限制对特定操作的访问。

dataContract级别应用限制似乎有点棘手。我们可以在这种情况下利用WCF可扩展性点吗?

0 个答案:

没有答案