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.

È stato utile?

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
scroll top