Consommer une méthode non mentionnée dans OperationContract
Question
J'ai un service WCF. Qui a deux méthodes, dites Get et Save. Je souhaite uniquement exposer la méthode Get au tiers qui utilisera le service, alors que mon application devrait pouvoir utiliser les fonctions Get et Save.
Existe-t-il un moyen de consommer une méthode autre que OperationContract? Je songe à vérifier le nom d'hôte de la demande et à n'accorder l'accès que s'il s'agit du nom d'hôte de mon application.
La solution
Pourquoi ne pas créer un deuxième ServiceContract
comportant à la fois Get
et défini
comme OperationContracts
? Ensuite, vous pourrez déterminer qui peut accéder à ce deuxième contrat.
[ServiceContract]
public interface IFoo
{
[OperationContract]
void Get();
}
[ServiceContract]
public interface IFooInternal : IFoo
{
[OperationContract]
void Set();
}
Autres conseils
Voici le code permettant d'identifier l'adresse IP de l'hôte:
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";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow