将WebServiceHost转换为WCF服务应用程序

时间:2013-03-20 10:55:32

标签: c# wcf web-services webservicehost

我有一个工作的控制台应用程序,其中所有地址和配置都在配置文件中。但是当我尝试将此代码移动到WCF服务应用程序时,我会遇到各种错误。

class Program
{
    static void Main(string[] args)
    {

        WebServiceHost host = new WebServiceHost(typeof(ImageService));
        host.Open();

        Console.WriteLine("Service up");
        Console.ReadLine();

        host.Close();
    }
}

问题是WCF服务应用程序自动启动并且没有主要方法,例如控制台应用程序。如果没有main方法,如何定义WCF服务以启动WebServiceHost?

2 个答案:

答案 0 :(得分:0)

您必须通过继承ServiceBase类来创建自己的服务。覆盖OnStart()方法并在实现中打开WCF服务。覆盖OnStop()方法并在实现中关闭WCF服务。

答案 1 :(得分:0)

我找到了解决这个问题的简单方法。为了告诉WCF使用webservice,所需要的只是将其添加到.svc文件

Factory="System.ServiceModel.Activation.WebServiceHostFactory"

不知怎的,我可以在Visual Studio中打开这个文件,所以我导航到项目文件夹并使用记事本打开它。我的服务.svc文件看起来像这样:

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>