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服务时,只在一个类中实现这个解决方案,但找不到任何结果。

有没有办法篡改主机代码?

ServiceHost仅支持类服务类型

我建议您更改以下内容:

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

到此:

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

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

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

阅读此处获取示例。