Служба 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();