[英]Windows Service executes code in debug, but not in release
我正在托管WCF-webservice的Windows Service上运行,当我在调试模式下运行它时,它可以正常工作:
#if DEBUG
SynchroService myService = new SynchroService();
myService.OnDebugStart();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new SynchroService()
};
ServiceBase.Run(ServicesToRun);
#endif
OnDebugStart()只是调用Windows服务的OnStart()方法,运行的线程只是无限运行的线程(直到调用OnStop()为止),以检查该服务是否仍然在线和在线。
protected override void OnStart(string[] args)
{
try
{
ServiceStatus serviceStatus = new ServiceStatus();
serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
syncService = new SynchroComService();
myServiceHost = new ServiceHost(syncService);
myServiceHost.Open();
syncService.StartListening();
thread = new Thread(CheckHost);
thread.Start();
serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
}
catch (Exception ex)
{
WriteError(ex);
}
}
现在,当我创建WCF服务(syncService)时,它应该运行代码以启动SQLDependency并开始侦听数据库。 当我在debugmode中启动它时,它工作得很好,但是当我在release中运行它时,该服务将被托管,但是代码不会执行。
我到处都在寻找相同类型的答案或问题,但是我什么也没想出来。 因此,如果有人遇到相同类型的问题,请告诉您如何解决。
亲切的问候
问题不在于我的代码,而是与运行服务时的权限有关。
该服务已作为本地系统帐户启动,但没有运行该服务/执行代码的权限。
要更改运行服务的帐户:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.