8

ho dichiarato due contratti di servizio come segue:classe WCF attuazione di due contratti di gestione in diversi contratti di servizio con lo stesso nome

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

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

ho una classe che implementa queste due contratti. Ho creato due endpoint per entrambi i contratti. Ma non sono in grado di accedere al servizio dal codice cliente. Esso mostra un grosso errore quando provo ad aggiornare il riferimento al servizio come:

Metadati contiene un errore che non può essere risolto .... Non c'era endpoint ascolto a ..., ecc

So che non è possibile avere due OperationContract s con lo stesso nome, ma è possibile avere due contratti operativi in ​​contratti di servizio diversi con lo stesso nome ma firma diversa?

risposta

13

Se un servizio implementa entrambi i contratti, è necessario fornire nomi univoci ai contratti di gestione.

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

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

come devo consumare il metodo allora? Mostra solo un metodo nel codice client. – Archie

+0

Ottenuto ciò, creerò due client corrispondenti a due contratti di servizio. Grazie. – Archie

6

È possibile utilizzare quanto segue.

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

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