我有一个基本程序,它利用特定的API为云托管提供商。该程序生成一个HttpWebRequest
,它基本上就像是对云中某个服务器执行操作的请求(例如,关闭它,启动它)。
我遇到的问题是,当我从本地计算机执行脚本时,脚本可以正常工作,但是当我从我们的某个生产服务器执行脚本时,脚本无效。有问题的服务器是Windows 2008 R2
框(虚拟/托管),如果我可以让这个脚本在那里工作,它将成为脚本主机。
有趣的是,此脚本之前在生产环境中工作(通过Windows任务计划程序自动执行)至少几周。然后,突然间,它昨天停止了工作。没有我知道的服务器更改,但我不是唯一一个可以访问环境的服务器,因此可以在那里进行更改。我有点担心可能是某些安全或防火墙设置导致了这个问题。我们最近安装了新的病毒防护软件,因此这是一个潜在的罪魁祸首。
HttpWebRequest
在某种程度上不合适会导致它被阻止或以某种方式失败吗?这是我的代码:
using System;
using System.Net;
using System.Text;
class Script {
static void Main(string[] args) {
string organizationId = args[0];
string serverId = args[1];
string serverCommand = args[2];
string username = args[3];
string password = args[4];
string credentials = username + ":" + password;
credentials = Convert.ToBase64String(Encoding.Default.GetBytes(credentials));
//send command to server
Uri uri = new Uri("https://api.opsourcecloud.net/oec/0.9/" + organizationId + "/server/" + serverId + "?" + serverCommand);
HttpWebRequest serverRequest = (HttpWebRequest)WebRequest.Create(uri);
serverRequest.Headers["Authorization"] = "Basic " + credentials;
HttpWebResponse serverResponse = (HttpWebResponse)serverRequest.GetResponse();
}
}
这是我的错误:
Unhandled Exception: System.Net.WebException: Unable to connect to the remote se
rver ---> System.Net.Sockets.SocketException: No connection could be made becaus
e the target machine actively refused it 168.143.82.65:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddre
ss socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Sock
et s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state,
IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at Script.Main(String[] args)
答案 0 :(得分:0)
您的Authorization
标题似乎存在问题。请尝试使用NetworkCredential
代替您的请求:
serverRequest.Credentials = new NetworkCredential(username, password);