0
我有一個基本程序,它爲雲託管提供程序使用特定的API。該程序產生了一個HttpWebRequest
,這基本上就像是向雲中的一臺服務器執行操作(例如關閉它,啓動它)的請求。當從特定服務器發送時,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)
我試過並獲得了相同的行爲。從我的本地機器發送請求時,請求成功,但是當從服務器發出請求時,它會拋出上述異常。儘管如此,你的建議確實看起來更乾淨,所以我可能會保持這種改變。 – nairware
這可能是防火牆問題,或者服務器拒絕響應,因爲您一次發出的請求太多。 –