Soy nuevo en WCF y trato de que mi primer servicio se ejecute. Estoy cerca, pero atascado en este problema.WCF Service: el tiempo de ejecución no muestra el ServiceContract en la interfaz
En mi archivo de definición de interfaz, tengo esto:
[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]
public interface IInventoryService
{
[OperationContract]
string GetInventoryName(int InventoryID);
}
Entonces tengo mi archivo de clase (para el servicio) que hereda:
public class InventoryService : IInventoryService
{
// This method is exposed to the wcf service
public string GetInventoryName(int InventoryID)
{
return "White Paper";
}
Por último, en mi proyecto anfitrión I tenga esto:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Todo compila bien, y cuando el host va a agregar el punto final del servicio, b Obliga con esto: "El tipo de contrato Inventory.InventoryService no se atribuye con ServiceContractAttribute. Para definir un contrato válido, el tipo especificado (ya sea una interfaz de contrato o una clase de servicio) debe atribuirse a ServiceContractAttribute. "
Sé que me falta algo simple aquí. Tengo la interfaz claramente marcada como un contrato de servicio. y hay una referencia a ese proyecto en el proyecto anfitrión
Cuando trato que me da la ArgumentException, "ServiceHost solo es compatible s tipos de servicio de clase. " –
Cambió el incorrecto - cambie la llamada AddServiceEndpoint a la interfaz, mantenga ServiceHost como clase. – Brian
¡Entendido! Así que estoy instaurando ServiceHost, pasando en la clase concreta, pero estoy definiendo el punto final, o vinculante, con la interfaz, que es realmente la definición del contrato (es decir, no la clase). Eventualmente entenderé esto. Gracias Brian y Andrew. –