Je suis nouveau à WCF et essaye de faire fonctionner mon premier service. Je suis proche, mais coincé sur ce problème.Service WCF - l'exécution ne voit pas le contrat de service sur l'interface
Dans mon fichier de définition d'interface, j'ai ceci:
[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]
public interface IInventoryService
{
[OperationContract]
string GetInventoryName(int InventoryID);
}
J'ai mon fichier de classe (pour le service) qui hérite:
public class InventoryService : IInventoryService
{
// This method is exposed to the wcf service
public string GetInventoryName(int InventoryID)
{
return "White Paper";
}
Enfin, dans mon projet d'accueil I avoir ceci:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Tout compile bien, et quand l'hôte va ajouter le point de terminaison de service, il b ombs avec ceci: "Le type de contrat Inventory.InventoryService n'est pas attribué à ServiceContractAttribute. Pour définir un contrat valide, le type spécifié (interface de contrat ou classe de service) doit être attribué à ServiceContractAttribute. "
Je sais qu'il me manque quelque chose de simple: j'ai l'interface clairement identifiée comme un contrat de service et il y a une référence à ce projet dans le projet hôte
Quand j'essaie que cela me donne la ArgumentException, "Support ServiceHost uniquement s les types de service de classe. " –
Commuté le mauvais - changez l'appel AddServiceEndpoint à l'interface, gardez ServiceHost en tant que classe. – Brian
J'ai compris! J'instancie donc ServiceHost en passant dans la classe concrète, mais je définis le point de terminaison, ou liaison, avec l'interface, qui est en fait la définition du contrat (c'est-à-dire pas la classe). Je finirai par comprendre. Merci Brian et Andrew. –