Служба WCF-среда выполнения не видит ServiceContract на интерфейсе

Я новичок в WCF и пытаюсь запустить свою первую службу. Я близок, но застрял на этой проблеме.

В моем файле определения интерфейса, у меня есть это:

[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]       
    public interface IInventoryService
    {
        [OperationContract]
        string GetInventoryName(int InventoryID);
    }

тогда у меня есть файл класса (для службы), который наследует его:

   public class InventoryService : IInventoryService
    {
        // This method is exposed to the wcf service
        public string GetInventoryName(int InventoryID)
        {
            return "White Paper";
        }

наконец, в моем хост-проекте у меня есть это:

    ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
    host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
        "net.tcp://localhost:9000/GetInventory");
    host.Open();

все компилируется отлично, и когда хост идет, чтобы добавить конечную точку службы, он бомбит с этим: "инвентарь типа контракта.InventoryService не приписывается с ServiceContractAttribute. Для определения действительного контракта указанный тип (интерфейс контракта или класс обслуживания) должен быть приписан ServiceContractAttribute."

Я знаю, что мне не хватает чего-то простого. У меня есть интерфейс, четко обозначенный как контракт на обслуживание, и в проекте Хоста есть ссылка на этот проект.

1 ответов


ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
    "net.tcp://localhost:9000/GetInventory");
host.Open();

Если атрибут ServiceContract находится на интерфейсе, а не в конкретном классе, попробуйте следующее:

ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.IInventoryService), new NetTcpBinding(),
    "net.tcp://localhost:9000/GetInventory");
host.Open();