WCF classe implémentant deux contrats d'exploitation dans les différents contrats de services avec le même nom

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

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 OperationContracts 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?

Était-ce utile?

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top