【问题标题】:Windows Service executes code in debug, but not in releaseWindows 服务在调试中执行代码,但不在发布中
【发布时间】:2015-03-09 12:21:44
【问题描述】:

我正在开发一个托管 WCF-webservice 的 Windows 服务,当我在调试模式下运行它时它可以工作:

#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 并开始监听数据库。当我在调试模式下启动它时,它工作得非常好,但是当我在发行版中运行它时,服务被托管,但代码不执行。

我到处寻找相同类型的答案或问题,但我一无所获。因此,如果有人遇到过相同类型的问题,请务必告诉您您是如何解决的。

亲切的问候

【问题讨论】:

  • 一旦遇到这个问题,调试模式可以完美运行。问题是服务启动类型设置为网络而不是本地系统。确保您的服务符合您的要求。详细查看服务启动类型,然后设置最适合的。也看看事件查看器
  • 我已经将它设置为本地系统,所以问题不在于那里。

标签: c# web-services wcf windows-services


【解决方案1】:

问题不是我的代码,而是运行服务时的权限问题。
该服务作为本地系统帐户启动,但它没有运行服务/执行代码的权限。

更改运行服务的帐户:

  1. 打开 services.msc
  2. 右键单击服务名称
  3. 转到登录选项卡并将帐户更改为具有正确权限的帐户
  4. 重启服务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多