Sono nuovo a WCF e sto provando a far funzionare il mio primo servizio. Sono vicino ma bloccato su questo problema.Servizio WCF: runtime non visualizza ServiceContract sull'interfaccia
Nel mio file di definizione di interfaccia, ho questo:
[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]
public interface IInventoryService
{
[OperationContract]
string GetInventoryName(int InventoryID);
}
Poi ho il mio file di classe (per il servizio) che eredita esso:
public class InventoryService : IInventoryService
{
// This method is exposed to the wcf service
public string GetInventoryName(int InventoryID)
{
return "White Paper";
}
Infine, nel mio progetto Host I avere questo:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Tutto compila bene, e quando l'host va ad aggiungere l'endpoint del servizio, it b ombs con questo: "Il tipo di contratto Inventory.InventoryService non è attribuito con ServiceContractAttribute. Per definire un contratto valido, il tipo specificato (o interfaccia del contratto o classe di servizio) deve essere attribuito con ServiceContractAttribute. "
So che mi manca qualcosa di semplice qui. Ho l'interfaccia chiaramente indicata come un contratto di servizio e c'è un riferimento a tale progetto nel progetto di accoglienza
Quando provo che mi dà la ArgumentException, "ServiceHost solo supporto s tipi di servizio di classe. " –
Commutato quello sbagliato - cambia la chiamata AddServiceEndpoint all'interfaccia, mantieni ServiceHost come classe. – Brian
Trovato! Quindi sto istanziando ServiceHost, passando la classe concreta, ma sto definendo l'endpoint, o associazione, con l'interfaccia, che è in realtà la definizione del contratto (cioè non la classe). Alla fine prenderò il blocco di questo. Grazie Brian e Andrew. –