Я разработал Quartz.Net окна обслуживания для выполнения запланированных заданий, и я создал SQLite jobstore для того, чтобы работать. Вот настройки моей AdoJobStore
:Quartz.Net служба планировщика не запускается автоматически при запуске
# SQLite settings
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.misfireThreshold = 60000
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz
quartz.jobStore.useProperties = true
quartz.jobStore.dataSource = default
quartz.jobStore.tablePrefix = qrtz_
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz
quartz.dataSource.default.provider = SQLite-10
quartz.dataSource.default.connectionString = Data Source=.\jobs.db;Version=3
Прежде чем дать вам головную боль, я должен сказать, что это рабочее решение! Это означает, что магазин работ работает просто отлично! Каждое задание состоит из запуска файла .exe
, который будет получать свои параметры из базы данных SQL Server
, используя строку соединения, которая хранится в текстовом файле.
Так что если услуга запускается автоматически, все работает нормально.
После установки службы Windows мы даем ей имя пользователя, которое имеет доступ к целевой базе данных в службе . Вход в систему вкладка. Мы установили сервис для запуска автоматически (и попробовали режим Automatic Delayed). На вкладке Recovery мы также сообщим его Перезагрузите в случае его сбоя.
Однако обслуживание, похоже, не начинается само по себе на некоторых машинах, и это заставило меня задуматься довольно долго. На машинах с отказом, это то, что мои журналы службы, когда он не запускается: установлена
2015-02-13 15:09:15,674 [1] ERROR Quartz.Server.QuartzServer [(null)] - Server initialization failed:Unable to bind scheduler to remoting.
Quartz.SchedulerException: Unable to bind scheduler to remoting. ---> System.Net.Sockets.SocketException: No such host is known
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
at System.Runtime.Remoting.Channels.CoreChannel.GetMachineIp()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupMachineName()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider, IAuthorizeRemotingConnection authorizeCallback)
at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
at Quartz.Simpl.RemotingSchedulerExporter.RegisterRemotingChannelIfNeeded()
at Quartz.Simpl.RemotingSchedulerExporter.Bind(IRemotableQuartzScheduler scheduler)
at Quartz.Core.QuartzScheduler.Bind()
at Quartz.Core.QuartzScheduler.Initialize()
--- End of inner exception stack trace ---
at Quartz.Core.QuartzScheduler.Initialize()
at Quartz.Impl.StdSchedulerFactory.Instantiate()
at Quartz.Impl.StdSchedulerFactory.GetScheduler()
at Quartz.Server.QuartzServer.Initialize() [See nested exception: System.Net.Sockets.SocketException (0x80004005): No such host is known
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
at System.Runtime.Remoting.Channels.CoreChannel.GetMachineIp()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupMachineName()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider, IAuthorizeRemotingConnection authorizeCallback)
at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
at Quartz.Simpl.RemotingSchedulerExporter.RegisterRemotingChannelIfNeeded()
at Quartz.Simpl.RemotingSchedulerExporter.Bind(IRemotableQuartzScheduler scheduler)
at Quartz.Core.QuartzScheduler.Bind()
at Quartz.Core.QuartzScheduler.Initialize()]
Службы на хосте 127.0.0.1
порта 555
и, кажется, не нужна зависимость, потому что он работает в некоторых других машинах.
У меня такое ощущение, что служба пытается начать работу до того, как будет доступ к базе данных или до того, как будет установлен хост TCP
. Но если это так, то почему он работает на других устройствах?
Я задал тот же вопрос раньше, но не смог найти рабочий ответ. Любая помощь от Quartz.Net
dev team или Службы Windows.
имеет смысл. Я должен попробовать это. Сообщите, если это сработает. – Disasterkid
У меня нет служб с именами, о которых вы упомянули выше, но я вижу «TCP/IP NETBIOS Helper» и «DNS-клиент» в моих установленных сервисах. – Disasterkid
'Dnscache' - это имя службы, а« DNS-клиент »- это отображаемое имя для той же услуги. 'lmhosts' - это имя службы для« TCP/IP NETBIOS Helper », но я не уверен, потребуется ли NetBios. 'Tcpip' на самом деле является устройством, а не сервисом, но он все равно может быть включен как зависимость. – sgmoore