我们有一个简单的控制台应用程序,用C#.NET 4.0编写,当前在计划任务上运行。这个控制台应用程序直接从磁盘上直接取出文件,然后将它们上传到同一台机器上托管的ASP.NET网站。当在计划任务上运行时,Web请求在控制台应用程序中失败
当此控制台的触发时间运行失败,但下列情况除外:
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上侦听。 – Mmerrell