ServiceHost仅支持类服务类型
本文关键字:服务 类型 支持 ServiceHost | 更新日期: 2023-09-27 18:28:54
我有一个名为WcfService2的服务(原来我知道),它有一个带有公共接口的IService.cs文件:
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文件,并且当我尝试在本地添加web服务时,只在一个类中实现这个解决方案,但找不到任何结果。
有没有办法篡改主机代码?
我建议您更改以下内容:
WebServiceHost host = new WebServiceHost(typeof(IService1));
到此:
WebServiceHost host = new WebServiceHost(typeof(Service1));
您应该使用实现服务的类创建WebServiceHost;
WebServiceHost host = new WebServiceHost(typeof(Service1));
阅读此处获取示例。