我在127.0.0.1
端口555
上运行了Quartz调度程序Windows服务约2年。从几天前开始,我再也无法开始服务了。当我查看代码时,我发现我无法启动TcpChannel
对象。
IChannel chan;
chan = new TcpChannel(props, null, formatprovider);
当我在我的cmd上执行netstat
时,我在倾听或已建立中找不到该地址。我也无法在我的防火墙上找到有关此端口的任何新规则。
该服务基于Quartz.net调度程序。
服务日志:
2016-02-25 10:19:58,847 [9] INFO Quartz.Impl.StdSchedulerFactory [(null)] - Quartz.NET properties loaded from configuration file 'C:\Users\pedram.mobedi\Documents\GitHub\Postbag\build\Debug\quartz.config'
2016-02-25 10:19:58,958 [9] INFO Quartz.Util.DBConnectionManager [(null)] - Registering datasource 'default' with db provider: 'Quartz.Impl.AdoJobStore.Common.DbProvider'
2016-02-25 10:19:58,965 [9] INFO Quartz.Impl.StdSchedulerFactory [(null)] - Using default implementation for object serializer
2016-02-25 10:19:58,996 [9] INFO Quartz.Impl.StdSchedulerFactory [(null)] - Using custom data access locking (synchronization): Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore
2016-02-25 10:19:59,002 [9] INFO Quartz.Impl.StdSchedulerFactory [(null)] - Using default implementation for ThreadExecutor
2016-02-25 10:19:59,099 [9] INFO Quartz.Core.SchedulerSignalerImpl [(null)] - Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl
2016-02-25 10:19:59,107 [9] INFO Quartz.Core.QuartzScheduler [(null)] - Quartz Scheduler v.2.2.4.400 created.
2016-02-25 10:19:59,128 [9] INFO Quartz.Impl.AdoJobStore.JobStoreTX [(null)] - JobStoreTX initialized.
2016-02-25 10:19:59,263 [9] INFO Quartz.Core.QuartzScheduler [(null)] - Scheduler QuartzScheduler_$_NON_CLUSTERED shutting down.
2016-02-25 10:19:59,270 [9] INFO Quartz.Core.QuartzScheduler [(null)] - Scheduler QuartzScheduler_$_NON_CLUSTERED paused.
2016-02-25 10:19:59,287 [9] INFO Quartz.Core.QuartzScheduler [(null)] - Scheduler QuartzScheduler_$_NON_CLUSTERED Shutdown complete.
2016-02-25 10:19:59,321 [9] 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.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider)
at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
at Quartz.Simpl.RemotingSchedulerExporter.RegisterRemotingChannelIfNeeded() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Simpl\RemotingSchedulerExporter.cs:line 120
at Quartz.Simpl.RemotingSchedulerExporter.Bind(IRemotableQuartzScheduler scheduler) in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Simpl\RemotingSchedulerExporter.cs:line 71
at Quartz.Core.QuartzScheduler.Bind() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Core\QuartzScheduler.cs:line 375
at Quartz.Core.QuartzScheduler.Initialize() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Core\QuartzScheduler.cs:line 352
--- End of inner exception stack trace ---
at Quartz.Core.QuartzScheduler.Initialize() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Core\QuartzScheduler.cs:line 366
at Quartz.Impl.StdSchedulerFactory.Instantiate() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Impl\StdSchedulerFactory.cs:line 1046
at Quartz.Impl.StdSchedulerFactory.GetScheduler() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Impl\StdSchedulerFactory.cs:line 1120
at Quartz.Server.QuartzServer.GetScheduler() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\server\Quartz.Server\QuartzServer.cs:line 62
at Quartz.Server.QuartzServer.Initialize() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\server\Quartz.Server\QuartzServer.cs:line 47 [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.TcpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider)
at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
at Quartz.Simpl.RemotingSchedulerExporter.RegisterRemotingChannelIfNeeded() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Simpl\RemotingSchedulerExporter.cs:line 120
at Quartz.Simpl.RemotingSchedulerExporter.Bind(IRemotableQuartzScheduler scheduler) in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Simpl\RemotingSchedulerExporter.cs:line 71
at Quartz.Core.QuartzScheduler.Bind() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Core\QuartzScheduler.cs:line 375
at Quartz.Core.QuartzScheduler.Initialize() in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\Quartz.NET-2.2.4\src\Quartz\Core\QuartzScheduler.cs:line 352]
更新:主机文件
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 localhost
更新2 :quartz.config
# Quartz Config
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
quartz.threadPool.threadCount = 10
#quartz.threadPool.threadPriority = Normal
# Settings for using Quartz as a windows service
quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
quartz.scheduler.exporter.port = 555
quartz.scheduler.exporter.bindName = Postbag
quartz.scheduler.exporter.channelType = tcp
quartz.scheduler.exporter.channelName = httpQuartz
# 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
答案 0 :(得分:0)
这意味着您绑定了一个不存在的主机名。也许你已将它指向另一个位置。
1,您是否编辑过防火墙规则?可能是您阻止了您的程序,或者您已阻止对127.0.0.1
的所有访问权限2,您的主机名是域名吗?如果是,则表示域不再指向此计算机。你应该在HOST文件中重新指出它:
按Win + R,输入以下命令:
notepad.exe %windir%\system32\drivers\etc\hosts
然后,您可以检查该域是否已存在于该文件中。如果是,并以“#”开头,则删除“#”。如果没有,请输入以下内容:
127.0.0.1 [your domain name]
例如:
127.0.0.1 test.cn
3,如果主机名是“127.0.0.1”,则不应该发生。这可能是您的操作系统的错误