Windows services Quartz.net未在远程服务器上启动
我已经在windows服务中实现了quartz.net来运行任务。在本地工作站上一切正常。但一旦部署到远程win服务器主机上,它就会在初始化后挂起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
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方法可能出了问题 以下是一些可以帮助您解决问题的方法:
我遇到了与此类似的问题,原因是程序集名称中有点/句点,例如
Project.Update.Service
。当我把它改为ProjectUpdateService
时,它工作得很好
奇怪的是,它总是在开发机器上工作。只是永远不要在远程机器上
更新:可能是服务的长度导致了此问题。通过删除点,我缩短了服务名称。看起来最大长度为25个字符。那么,您是说服务正确启动,然后不执行作业?或者服务挂起,没有给你“Successfully started”消息(假设你是从cmd运行的),我甚至重构了代码,将其作为控制台应用程序而不是服务运行。调度程序的行为非常奇怪,我甚至无法正常关闭应用程序,只能通过进程终止。调度程序似乎启动了一些操作并挂起。然后,您应该做的第一件事是检查windows日志,查看服务是否已正确初始化。转到“开始”菜单并查找“事件查看器”,转到windows日志,应用程序,按日期/时间排序,查找与您的服务源匹配的日志,并让我知道日志所说的内容大多数时候您无法结束此过程,因为它挂起在服务的启动或停止事件上,在此期间服务不会响应事件。作为一般规则,将任何繁重或容易出错的代码从OnStart中删除,并围绕上面的代码进行尝试/捕获,然后重复事件查看器过程,您将获得对所发生情况的更详细描述