Consumiendo un método no mencionado en OperationContract
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.
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