خدمة WCF - وقت التشغيل لا يرى ServiceConactractract
-
09-09-2019 - |
سؤال
أنا جديد على 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 مع Servicecontractactattribute. من أجل تحديد عقد صالح، النوع المحدد (إما واجهة العقد أو الخدمة يجب أن يعزى الطبقة) مع Servicecontracttribute. "
أعلم أنني أفتقد شيئا بسيطا هنا. لدي الواجهة بوضوح بمثابة عقد خدمة وهناك إشارة إلى هذا المشروع في المشروع المضيف.
المحلول
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
إذا كانت سمة ServiceConact الخاصة بك موجودة على الواجهة ليست الفئة الملموسة، فجرب ما يلي:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.IInventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
لا تنتمي إلى StackOverflow