无法在 127.0.0.1 端口 555 上打开 TCP 通道(套接字异常:未知此类主机)

本文关键字:异常 套接字 未知 主机 通道 端口 TCP | 更新日期: 2023-09-27 18:36:12

我已经在端口上运行了大约 2 年的 Quartz 调度程序 Windows 服务127.0.0.1端口555。从几天前开始,我无法再开始我的服务。当我查看代码时,我发现我无法启动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:石英.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

无法在 127.0.0.1 端口 555 上打开 TCP 通道(套接字异常:未知此类主机)

这意味着您绑定了一个不存在的主机名。也许您已将其指向另一个位置。

1,您是否编辑了防火墙规则?可能是您阻止了程序,或者阻止了对 127.0.0.1 的所有访问

2,您的主机名是域名吗?如果是,则意味着域不再指向此计算机。您应该在主机文件中重新指向它:

按 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",则不应该发生。这可能是您的操作系统的错误