8

Mam deklarowanej dwie umowy o świadczenie usług w następujący sposób:WCF klasa wykonania dwóch umów eksploatacji w różnych umowach o świadczenie usług o takiej samej nazwie

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract] 
    double Add(double ip); 
} 

Mam klasy, która implementuje te dwa kontrakty. Stworzyłem dwa punkty końcowe dla obu kontraktów. Ale nie mogę uzyskać dostępu do usługi z kodu klienta. Wyświetla duży błąd, gdy próbuję zaktualizować odniesienie usług jak:

Metadane zawiera błąd, który nie może być rozwiązany .... Nie było słuchać na końcowy ... itd

Wiem, że nie można mieć dwóch OperationContract s o tej samej nazwie, ale czy możliwe jest posiadanie dwóch umów o pracę w różnych umowach o tej samej nazwie, ale o innym podpisie?

Odpowiedz

13

Jeśli jedna usługa realizuje obie umowy, należy podać unikalne nazwy umów dotyczących operacji.

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract(Name="AddInt")] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract(Name="AddDouble")] 
    double Add(double ip); 
} 
+0

Jak mam wtedy spożywać tę metodę? Po prostu pokazuje tylko jedną metodę w kodzie klienta. – Archie

+0

Mam to, utworzę dwóch klientów odpowiadających dwóm umowom serwisowym. Dzięki. – Archie

6

Możesz użyć następujących.

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract(Name = "Add1")] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract(Name = "Add2")] 
    double Add(double ip); 
}