服务中的OnStart应用程序无法正常工作

时间:2014-07-24 06:52:29

标签: c# windows-services

我构建了一个将编辑数据库数据的服务。我希望在服务启动时运行Encrypt for connectionString /或者重新启动reuqest,我无法捕获OnStart

我错了什么?

我的班级

  public class Service1 : IService1
    {

        protected void OnStart(string[] args)
        {
            string stop="";
 //can't get here
 //here Encrypt the section.
 // section.SectionInformation.ProtectSection("DataProtectiond");
        }

        public string GetData(int value)
        {
            //my functions
        }
}

1 个答案:

答案 0 :(得分:1)

在调试服务时,很难捕获OnStart方法。您无法从Visual Studio运行服务,并且在生产中,在您可以附加调试器之前已经调用了OnStart方法。您可以做的是将以下代码放在OnStart方法中:

System.Diagnostics.Debugger.Launch()

这将弹出一个窗口,您可以在其中选择调试器。如果您已经打开了Visual Studio解决方案,则可以选择此项,调试器将附加到您的服务中。

运行您的服务"从Visual Studio中,你可以在Main()中输入这样的东西:

static void Main()
    {
        if (!Environment.UserInteractive)
        {
            // Startup as service. 
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new MyServices() 
            };
            ServiceBase.Run(ServicesToRun);
        }
        else
        {
           //Start things locally here, 
           //for example the same things you do in the OnStart() method of your service
        }
    }

现在您只需从Visual Studio运行程序,但在生产服务器上安装它时它也可以作为服务运行...