0

我编写了一个wcf 服务,然后在windows 服务中使用TCP托管 wcf。然后使用命令Installutil WindowsServiceSendMail.exe在windows 7上注册它。

我的问题是,当我右键单击service1(在 Windows 7 上的窗口服务上)并单击启动时,该服务没有启动。看了这篇文章,一步一步往前走,但是结果没有收到。

这是解决方案中wcf 项目中的 RunProgram() 方法

 [OperationContract]
  void RunProgram();

public void RunProgram()
{
  //code for check database
}

这是解决方案中Windows 服务项目中的代码

protected override void OnStart(string[] args)
{
    if (myServiceHost != null)
    {
        myServiceHost.Close();
    }
    myServiceHost = new ServiceHost(typeof(Service1));
    myServiceHost.Open();
}

protected override void OnStop()
{
    if (myServiceHost != null)
    {
        myServiceHost.Close();
        myServiceHost = null;
    }
}

然后我将wcf项目的引用添加到Windows 服务项目

然后使用命令Installutil WindowsServiceSendMail.exe在 Windows 7 上注册它

你可以从这里下载项目

我的问题是,当我右键单击service1(在 Windows 7 上的窗口服务上)并单击启动时,该服务没有启动。

4

1 回答 1

0

我发现了问题。我更改了 OnStart 方法。

protected override void OnStart(string[] args)
{
    if (myServiceHost != null)
    {
        myServiceHost.Close();
    }
    myServiceHost = new ServiceHost(typeof(SendMailService));
    myServiceHost.Open();

    WcfSendMail.SendMailServiceWCF s = new WcfSendMail.SendMailServiceWCF();
    s.RunProgram();
}

发布Windows 服务项目并在发布文件夹中运行 setup.exe 。当然使用命令Installutil WindowsServiceSendMail.exe在 Windows 7 上注册它。

于 2015-06-11T08:18:19.567 回答