Windows services Quartz.net未在远程服务器上启动

Windows services Quartz.net未在远程服务器上启动,windows-services,quartz.net,windows-server,quartz.net-2.0,Windows Services,Quartz.net,Windows Server,Quartz.net 2.0,我已经在windows服务中实现了quartz.net来运行任务。在本地工作站上一切正常。但一旦部署到远程win服务器主机上,它就会在初始化后挂起 ISchedulerFactory schedFact = new StdSchedulerFactory(); // get a scheduler var _scheduler = schedFact.GetScheduler(); // Configuration of triggers and jobs var trigger = (IC

我已经在windows服务中实现了quartz.net来运行任务。在本地工作站上一切正常。但一旦部署到远程win服务器主机上,它就会在初始化后挂起

ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
var _scheduler = schedFact.GetScheduler();

// Configuration of triggers and jobs
var trigger = (ICronTrigger)TriggerBuilder.Create()
                                          .WithIdentity("trigger1", "group1")
                                          .WithCronSchedule(job.Value)
                                          .Build();

var jobDetail = JobBuilder.Create(Type.GetType(job.Key)).StoreDurably(true)
                                .WithIdentity("job1", "group1").Build();

var ft = _scheduler.ScheduleJob(jobDetail, trigger);
一切似乎都是标准的。我有一个指向调度程序的私有静态指针,在初始化作业并将其添加到调度程序后,日志记录过程立即停止。之后没有其他事情发生。 如果有任何建议,我将不胜感激

谢谢

附言:

在事件查看器mb.net中发现一些奇怪的事件:

Restart Manager - Starting session 2 - ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.
Restart Manager - Ending session 2 started ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.

根据您的问题和您在评论中提供的其他信息,我猜您的服务的onStart方法可能出了问题

以下是一些可以帮助您解决问题的方法:

  • 将onStart方法中的代码放在try/catch块中,然后尝试安装和启动服务。然后检查windows日志,查看它是否安装正确、启动正确等
  • restart manager正在运行这一事实使我相信您的服务可能依赖于已在使用的进程。在安装服务之前,请确保已关闭服务的任何依赖项
  • 在onStart方法中放置数据密集型或长时间运行的操作也可能导致此问题。确保在onStart中不包含此类代码

  • 我遇到了与此类似的问题,原因是程序集名称中有点/句点,例如
    Project.Update.Service
    。当我把它改为
    ProjectUpdateService
    时,它工作得很好

    奇怪的是,它总是在开发机器上工作。只是永远不要在远程机器上


    更新:可能是服务的长度导致了此问题。通过删除点,我缩短了服务名称。看起来最大长度为25个字符。

    那么,您是说服务正确启动,然后不执行作业?或者服务挂起,没有给你“Successfully started”消息(假设你是从cmd运行的),我甚至重构了代码,将其作为控制台应用程序而不是服务运行。调度程序的行为非常奇怪,我甚至无法正常关闭应用程序,只能通过进程终止。调度程序似乎启动了一些操作并挂起。然后,您应该做的第一件事是检查windows日志,查看服务是否已正确初始化。转到“开始”菜单并查找“事件查看器”,转到windows日志,应用程序,按日期/时间排序,查找与您的服务源匹配的日志,并让我知道日志所说的内容大多数时候您无法结束此过程,因为它挂起在服务的启动或停止事件上,在此期间服务不会响应事件。作为一般规则,将任何繁重或容易出错的代码从OnStart中删除,并围绕上面的代码进行尝试/捕获,然后重复事件查看器过程,您将获得对所发生情况的更详细描述