使用OperationContract中未提及的方法

时间:2009-05-04 10:53:07

标签: wcf contract operation

我有一个WCF服务。其中有两种方法,比如Get和Save。我想只将Get方法暴露给将要使用该服务的第三方,而我的应用程序应该能够同时使用Get和Save。

有没有办法使用不在OperationContract中的方法?我正在考虑验证请求的主机名,并仅在它是我的应用程序的主机名时授予访问权限。

2 个答案:

答案 0 :(得分:4)

为什么不创建同时ServiceContractGetSet的第二个OperationContracts?然后你可以锁定谁可以达到第二份合同。

[ServiceContract]
public interface IFoo
{
    [OperationContract]
    void Get();
}

[ServiceContract]
public interface IFooInternal : IFoo
{
    [OperationContract]
    void Set();
}

答案 1 :(得分:0)

以下是识别主机IP地址的代码:

string GetAddressAsString()
{
           RemoteEndpointMessageProperty clientEndpoint =
                        OperationContext.Current.IncomingMessageProperties[
                        RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;

                    if (clientEndpoint != null)
                    {
                        return String.Format("{0}:{1}", clientEndpoint.Address, clientEndpoint.Port);
                    }
                    return "Failed to identify address";
}