Служба 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";
}
Наконец, в моем проекте Host у меня есть следующее:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Все компилируется в порядке, и когда хост переходит к добавлению конечной точки службы, он бомбит это: "Тип контракта Inventory.InventoryService не относится к ServiceContractAttribute. Чтобы определить действительный контракт, указанный тип (либо контракт интерфейс или класс службы) должны быть отнесены к ServiceContractAttribute."
Я знаю, что мне не хватает чего-то простого здесь. У меня есть интерфейс, четко обозначенный как контракт на обслуживание, и там ссылка на этот проект в проекте Host.
Ответы
Ответ 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();