2012-03-25 45 views
13

我有一个名为WcfService2(原来我知道),其中有一个IService.cs与公共接口文件的服务:的ServiceHost仅支持类服务类型

namespace WcfService2 
{ 
    [ServiceContract] 
    public interface IService1 
    {  
     [OperationContract] 
     [WebGet(UriTemplate = "/{value}")] 
     string GetData(string value);    
    } 
} 

然后我有我的公共类Service1.svc.cs文件,该文件返回像这样的值的字符串

namespace WcfService2 
{ 
    public class Service1 : IService1 
    { 
     public string GetData(string value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 
    } 
} 

我现在试图用一个控制台应用程序,像这样举办这次服务:

namespace Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebHttpBinding binding = new WebHttpBinding(); 
      WebServiceHost host = 
      new WebServiceHost(typeof(IService1)); 
      host.AddServiceEndpoint(typeof(IService1), 
      binding, 
      "http://localhost:8000/Hello"); 
      host.Open(); 
      Console.WriteLine("I DONT LIKE REST!"); 
      Console.WriteLine("Press <RETURN> to KILL REST FOR GOOD"); 
      Console.ReadLine(); 
     } 
    } 
} 

但我运行后出现错误:

ServiceHost只支持类服务类型。

所以这显然与我的IService是公共接口类型有关。但我不知道如何创建它,当我第一次创建WCF Service application它给你两个标准文件IService和Service.svc文件,如果我删除或者,并且只在一个类中实现这个解决方案,当我尝试添加网络在本地灵魂服务中找不到任何东西。

有没有办法摆脱主机代码?

+0

还有另外一个答案试试@ http://stackoverflow.com/q/19306395/16391 – StingyJack 2015-05-13 21:13:05

回答

25

我建议你改变这一点:

WebServiceHost host = new WebServiceHost(typeof(IService1)); 

这样:

WebServiceHost host = new WebServiceHost(typeof(Service1)); 
+1

我得到这个错误,如果我这样做:合同类型WcfService2.Service1不属性与ServiceContractAttribute。为了定义一个有效的合同,指定的类型(合同接口或服务类)必须使用ServiceContractAttribute进行归属。# – 2012-03-25 20:17:35

+1

@Garrith:您不应该在发布代码时得到第一个错误。你关于删除文件的说法可能会起到一定的作用。 – 2012-03-25 20:28:55

+3

任何读这个答案的人也请看:http://stackoverflow.com/questions/9864006/servicecontractattribute-error-on-simple-wcf-service作为WebServiceHost是Service1和AddServiceEndpoint是IService1 Becareful! – 2012-03-25 21:33:57

4

您应该使用实现该服务的类创建WebServiceHost;

WebServiceHost host = new WebServiceHost(typeof(Service1)); 

例如,阅读here

+0

请参阅威尔马库里埃回答。 – 2012-03-25 20:22:43

相关问题