如何使用Windows服务和WCF更新数据库中的某些记录?

时间:2015-06-10 12:53:43

标签: wcf service tcp windows-services wcfserviceclient

我写了 wcf服务,然后在 Windows服务中使用 TCP 编写主机wcf,然后使用命令 Installutil WindowsServiceSendMail .exe Windows 7 上注册。

我的问题是,当我右键单击 service1 (在Windows 7上的窗口服务上)并单击“开始”时,服务无法启动。 我读了这个article并且我一步一步前进但结果没有收到。

这是解决方案中 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 projec t的引用添加到 Windows服务项目

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

您可以从here

下载项目

我的问题是,当我右键单击 service1 (在Windows 7上的窗口服务上)并单击“开始”时,服务无法启动。

1 个答案:

答案 0 :(得分: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上注册它。