Jestem nowy w WCF i próbuję uruchomić moją pierwszą usługę. Jestem blisko, ale utknąłem na tym problemie.Usługa WCF - środowisko wykonawcze nie widzące ServiceContract na interfejsie
W moim pliku definicji interfejsu, mam to:
[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]
public interface IInventoryService
{
[OperationContract]
string GetInventoryName(int InventoryID);
}
Następnie Mam plik klasy (za usługę), która dziedziczy go:
public class InventoryService : IInventoryService
{
// This method is exposed to the wcf service
public string GetInventoryName(int InventoryID)
{
return "White Paper";
}
Wreszcie, w moim projekcie Host I ma to:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Wszystko kompiluje się dobrze, a gdy host idzie dodać punkt końcowy usługi, to b ombs z tym: "Typ umowy Inventory.InventoryService nie jest przypisywany z ServiceContractAttribute. W celu zdefiniowania ważnej umowy określony typ (interfejs kontraktowy lub klasa usługowa) musi być przypisany za pomocą ServiceContractAttribute. "
Wiem, że brakuje mi czegoś prostego tutaj Mam interfejs wyraźnie oznaczony jako kontrakt serwisowy i nie ma odniesienia do tego projektu do projektu Host
Kiedy próbuję to, że daje mi ArgumentException, "Obsługa tylko ServiceHost Typy usług klasy s. " –
Przełączono niewłaściwy - zmień wywołanie AddServiceEndpoint na interfejs, utrzymuj ServiceHost jako klasę. – Brian
Got to! Występuję więc ServiceHost, przekazując konkretną klasę, ale definiuję punkt końcowy lub powiązanie z interfejsem, który jest tak naprawdę definicją umowy (to znaczy nie jest klasą). W końcu zrozumiem to. Dzięki, Brian i Andrew. –