2013-03-20 80 views
0

我有一个工作控制台应用程序,其中所有地址和配置都在配置文件中。但是,当我尝试将此代码移动到WCF服务应用程序时,出现各种错误。将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服务应用程序自动启动并且没有主控方法,如控制台应用程序。如何在不存在主方法的情况下定义WCF服务以启动WebServiceHost?

+0

是否要自行托管此WCF服务?当你说你的项目连接到Azure服务总线时,它是什么。您是否试图对内部调用Azure服务总线的WCF服务执行调用? – Rajesh 2013-03-20 16:29:55

+0

我试图建立一个可以使用REST从Azure服务总线中继调用的服务。对于像上面那样初始化的服务,这可以正常工作。当然,我不想使用现在使用的控制台应用程序,所以我想将其转换为托管在IIS上的WCF服务。 – Zeezer 2013-03-20 19:03:05

回答

0

我发现了一个非常简单的解决方案来解决这个问题。为了告诉WCF使用Web服务来代替,所有需要的是把它添加到.svc文件

Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

不知怎的,我couldent打开Visual Studio中文件的,所以我导航到项目文件夹,打开它使用记事本。我的服务.svc文件如下所示:

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

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

+0

这是如何完成的?我已经尝试从ServiceBase继承并在上面的示例中用OnStart()覆盖,但必须添加更多内容,OnStart()方法永远不会被调用 – Zeezer 2013-03-20 14:23:30

+0

创建服务的实例并调用OnStart() – flayn 2013-03-20 15:44:01

+0

什么类型的项目你现在有吗? – flayn 2013-03-20 15:45:01

相关问题