Je crée un comportement personnalisé pour WCF qui ne peut (pour des raisons d'interopérabilité) fonctionner correctement que lorsqu'un service expose un point de terminaison d'application unique.Comment différenciez-vous les points de terminaison d'application et d'infrastructure?
J'aimerais pouvoir utiliser la méthode IServiceBehavior.Validate
pour vérifier que seul un point d'extrémité d'application est exposé par le service. Actuellement, je fais ce qui suit:
public void Validate(
ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase)
{
if (serviceDescription.Endpoints.Count > 1)
{
throw new InvalidOperationException();
}
}
serviceDescription.Endpoints
contient malheureusement tous les critères d'évaluation, y compris le point de terminaison IMetadataExchange
. Cela entraîne l'échec de la validation sur des services parfaitement valides. Ce dont j'ai besoin est d'un moyen de ne compter que les points de terminaison de l'application (non-infrastructure), mais je ne peux pas trouver comment WCF lui-même détermine qui sont qui.
Votre implémentation semble en fait aller plus loin que le WCF, vérifiant l'espace de noms WSDL ainsi que le point de terminaison Mex. –