【问题标题】:Web Request Fails in Console App when ran on Schedule Task schedule按计划任务计划运行时,控制台应用程序中的 Web 请求失败
【发布时间】:2011-09-01 13:17:15
【问题描述】:

我们有一个简单的控制台应用程序,用 C# .NET 4.0 编写,目前在计划任务上运行。这个控制台应用程序只是从磁盘上直接取出文件,然后将它们上传到托管在同一台机器上的 ASP.NET 网站。

当此控制台在其触发时间运行时,它会失败并出现以下异常:

Message: Unable to connect to the remote server
Stack Trace:    at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at Program.Main(String[] args) in Program.cs:line 69
Inner Exception: System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it 127.0.0.1:80
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

但是,当我们手动运行应用程序时,它运行得非常好,当我们进入计划任务并手动运行任务时,它会毫无错误地执行。

我们当前为它尝试连接的域配置了主机文件,该文件指向您可以在异常中看到的环回 IP。这是由于防火墙配置不允许内部连接到外部 IP。

有关计划任务的其他信息:

  • 它设置为在管理员凭据下运行并具有最高权限。
  • 每天只运行一次
  • 它执行其他操作没有问题(移动和重命名 文件)
  • HttpWebRequest.GetRequestStream() 出现错误

【问题讨论】:

  • 你在 127.0.0.1:80 听什么?
  • 这是一个 Web 服务器,因此 IIS 将监听端口 80。

标签: c# .net httpwebrequest scheduled-tasks


【解决方案1】:

这最终成为一个非常奇怪的情况,解决另一个问题最终成为解决这个问题的原因。

最终发生的事情是,一个计划任务在强制 IIS 重置的同时运行。那么 IIS 重置会命中,当它试图启动备份时,这个过程会尝试上传文件。上传当然会因上述错误消息而失败,因为在 IIS 服务启动时最终没有在端口 80 上进行任何监听。

正在运行的计划任务是针对释放 IIS 将使用的资源的不同问题的旧修复。它在不同的用户之下,因此需要进一步挖掘才能找到。一旦它被禁用,日常流程就会毫无问题地运行。

【讨论】:

  • +1 用于记录解决方案,即使这是一个老问题
【解决方案2】:

您需要检查谁在使用 80 端口。检查 Skype 是否正在运行?

【讨论】:

  • 我遇到过很多类似你描述的情况,我发现Skype占用了80端口导致HttpRequest失败。
  • 计算机上没有安装Skype。
  • 我建议使用网络嗅探器,这样您就可以知道哪个进程/线程使用端口 80
【解决方案3】:

我在使用 WebClient 时遇到了类似的错误:

Unable to connect to the remote serverSystem.Net.Sockets.SocketException (0x80004005):连接尝试失败,因为连接方一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应 123.456 .789.000:80

我让我的 ScheduledTask “无论用户是否登录都运行”,但代码 (2) 失败了。

我将其更改为“仅在用户登录时运行”并解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多