Pregunta

Tengo servicios WCF. Que tiene dos métodos, digamos Get y Save. Quiero exponer solo el método Get al tercero que consumirá el servicio, mientras que mi aplicación debería poder consumir Get y Save.

¿Hay alguna forma de consumir un método que no esté en OperationContract? Estoy pensando en verificar el nombre de host de la solicitud y otorgar acceso solo si es el nombre de host de mi aplicación.

¿Fue útil?

Solución

¿Por qué no crear un segundo ServiceContract que tenga tanto Get como Set como OperationContracts ? Luego, puede bloquear quién puede obtener este segundo contrato.

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

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

Otros consejos

Aquí está el código para identificar la dirección IP del host:

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";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top