[英]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.