Win服务可以作为控制台应用程序,但不能作为Windows服务



我使用Topshelf 4.2.1创建了一个控制台应用程序服务。像使用windows服务一样使用它。我正在使用Dapper获取数据并更新Microsoft SQL Server,我从app.config中获取连接字符串,以及中的常量(文件夹路径、文件夹限制(控制台应用程序运行良好,但当我作为服务安装时,它会启动,但不会执行任何操作。

enter code here class Program
{
static void Main(string[] args)
{
var exitCode = HostFactory.Run(x =>
{
x.Service<EmailMonitoring>(s =>
{
s.ConstructUsing(emailMonitoring => new EmailMonitoring());
s.WhenStarted(emailMonitoring => emailMonitoring.Start());
s.WhenStopped(emailMonitoring => emailMonitoring.Stop());
});
x.RunAsLocalSystem();

x.SetServiceName("EmailMonitoring");
x.SetDisplayName("Email Monitoring");
x.SetDescription("Description");
});
int exitCodeValue = (int)Convert.ChangeType(exitCode, exitCode.GetTypeCode());
Environment.ExitCode = exitCodeValue;
}
}

enter code here private readonly Timer _timer;
public EmailMonitoring()
{
_timer = new Timer(1000 * int.Parse(Helper.AppSetVal("intervalSeconds"))) { AutoReset = false };
// when testing, use smaller interval and autoreset = false like example below
// _timer = new Timer( 1000  ) { AutoReset = false };
_timer.Elapsed += TimerElapsed;
} 
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
ServiceHelper.ProcessNewRecords();
}
public void Start()
{
_timer.Start();
}
public void Stop()
{
_timer.Stop();
}

SOLVED:在Microsoft Server SQL中,将NT AUTHORITY\SYSTEM的登录属性设置为sysadmin。点击屏幕截图

相关内容

最新更新