的ServiceHost仅支持类服务类型
我有一个名为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文件,如果我删除或者,并且只在一个类中实现这个解决方案,当我尝试添加网络在本地灵魂服务中找不到任何东西。
有没有办法摆脱主机代码?
我建议你改变这一点:
WebServiceHost host = new WebServiceHost(typeof(IService1));
这样:
WebServiceHost host = new WebServiceHost(typeof(Service1));
我得到这个错误,如果我这样做:合同类型WcfService2.Service1不属性与ServiceContractAttribute。为了定义一个有效的合同,指定的类型(合同接口或服务类)必须使用ServiceContractAttribute进行归属。# – 2012-03-25 20:17:35
@Garrith:您不应该在发布代码时得到第一个错误。你关于删除文件的说法可能会起到一定的作用。 – 2012-03-25 20:28:55
任何读这个答案的人也请看:http://*.com/questions/9864006/servicecontractattribute-error-on-simple-wcf-service作为WebServiceHost是Service1和AddServiceEndpoint是IService1 Becareful! – 2012-03-25 21:33:57
您应该使用实现该服务的类创建WebServiceHost;
WebServiceHost host = new WebServiceHost(typeof(Service1));
例如,阅读here。
请参阅威尔马库里埃回答。 – 2012-03-25 20:22:43
还有另外一个答案试试@ http://*.com/q/19306395/16391 – StingyJack 2015-05-13 21:13:05