8

he declarado dos contratos de servicios de la siguiente manera:clase WCF implementación de dos contratos de operación en diferentes contratos de servicio con el mismo nombre

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

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

tengo una clase que implemente estos dos contratos. Creé dos puntos finales para ambos contratos. Pero no puedo acceder al servicio desde el código del cliente. Se muestra un gran error al intentar actualizar la referencia de servicio como:

metadatos contiene un error que no puede ser resuelto .... No había extremo de escucha en ..., etc.

Sé que no puede tener dos OperationContract s con el mismo nombre, pero ¿es posible tener dos contratos de operación en diferentes contratos de servicio con el mismo nombre pero con una firma diferente?

Respuesta

13

Si un servicio implementa ambos contratos, entonces debería dar nombres únicos para sus contratos de operación.

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

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

¿cómo debo consumir el método, entonces? Muestra solo un método en el código del cliente. – Archie

+0

Entendido, crearé dos clientes correspondientes a dos contratos de servicio. Gracias. – Archie

6

Puede usar lo siguiente.

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

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