WCF classe implémentant deux contrats d'exploitation dans les différents contrats de services avec le même nom
-
26-09-2019 - |
Question
Je l'ai déclaré deux contrats de service comme suit:
[ServiceContract]
public interface IContract1
{
[OperationContract]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract]
double Add(double ip);
}
J'ai une classe qui implémente ces deux contrats. J'ai créé deux points d'extrémité pour les deux contrats. Mais je ne suis pas en mesure d'accéder au service à partir du code client. Il affiche une grande erreur lorsque je tente de mettre à jour la référence de service comme:
Les métadonnées contiennent une erreur qui ne peut être résolu .... Il n'y avait pas de point final à l'écoute ..., etc.
Je sais que vous ne pouvez pas avoir deux OperationContract
s avec le même nom, mais est-il possible d'avoir deux contrats d'exploitation dans les différents contrats de services avec le même nom mais différent signature?
La solution
Si un service utilise les deux contrats, vous devez donner des noms uniques à vos contrats d'exploitation.
[ServiceContract]
public interface IContract1
{
[OperationContract(Name="AddInt")]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract(Name="AddDouble")]
double Add(double ip);
}
Autres conseils
Vous pouvez utiliser ce qui suit.
[ServiceContract]
public interface IContract1
{
[OperationContract(Name = "Add1")]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract(Name = "Add2")]
double Add(double ip);
}