Consumo di un metodo non menzionato in OperationContract
Domanda
Ho un servizio WCF. Che ha due metodi, ad esempio Ottieni e salva. Voglio esporre solo il metodo Get alla terza parte che utilizzerà il servizio mentre la mia applicazione dovrebbe essere in grado di utilizzare sia Get che Save.
Esiste un modo per utilizzare un metodo non in OperationContract? Sto pensando di verificare il nome host della richiesta e di concedere l'accesso solo se è il nome host della mia domanda.
Soluzione
Perché non creare un secondo ServiceContract
che ha sia Get
che Set
come OperationContracts
? Quindi potresti bloccare chi può ottenere questo secondo contratto.
[ServiceContract]
public interface IFoo
{
[OperationContract]
void Get();
}
[ServiceContract]
public interface IFooInternal : IFoo
{
[OperationContract]
void Set();
}
Altri suggerimenti
Ecco il codice per identificare l'indirizzo IP dell'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";
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow