Puis-je savoir quelles méthodes WCF sont pris en charge sur le point final avant de l'appeler?

StackOverflow https://stackoverflow.com/questions/2861637

Question

J'ai un problème avec versioning un contrat de service WCF dans lequel l'un des nombreux points d'extrémité qui sont appelés pour l'opération manque une méthode du contrat.

Ma question est, comment puis-je faire que la commande est disponible sur le client avant d'essayer de l'appeler?

J'ai essayé:

  foreach (var od in proxy.Endpoint.Contract.Operations)
  {
    if (od.Name == "MyMethodName")
    {
      hasMethod = true;
      break;
    }
  }

Malheureusement, cela est d'utiliser le contrat de l'application d'appel et ne décrit pas réellement les mises en œuvre sur le point final lui-même. En conséquence, il retourne vrai même si le critère d'évaluation n'a pas exécuté la commande.

Était-ce utile?

La solution

Vous saurez jamais vraiment jusqu'à ce que vous l'essayer. Ce que vous avez est une procuration du contrat mis en œuvre, mais ce qui est sur le côté serveur aurait changé depuis que vous avez créé / généré.

En supposant qu'il est un http / httpws mise en œuvre, je suppose que vous pourriez appeler et vérifier la référence de service et télécharger le fichier wsdl. Cela vous dire quelles méthodes etc sont pris en charge. Le problème que vous allez avoir est que même si le nom de la méthode peut-être le même, vous devez également vérifier le type de retour et les paramètres vraiment être sûr que c'est la même méthode et que vous pouvez appeler le proxy que vous avez actuellement.

Voici un lien sur versioning dans WCF:
http://msdn.microsoft.com/en-us/library/ms731060. aspx

Voici un lien sur les meilleures pratiques versionning pour le WCF:
Meilleures pratiques pour versioning vos services avec WCF?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top