0

クラウド ホスティング プロバイダー向けの特定の API を利用する基本的なプログラムがあります。このプログラムは、HttpWebRequest基本的には、クラウド内のサーバーの 1 つに対してアクションを実行する要求に似ています (例: シャットダウン、起動)。

私が抱えている問題は、スクリプトをローカル マシンから実行すると機能するが、運用サーバーから実行すると機能しないことです。問題のサーバーはWindows 2008 R2ボックス (仮想/ホスト) であり、このスクリプトをそこで動作させることができれば、スクリプト ホストになります。

面白いことに、このスクリプトは、少なくとも数週間は (Windows タスク スケジューラを介して自動化された) 運用環境で動作していました。すると、昨日突然動かなくなりました。私が認識しているサーバーの変更はありませんが、環境にアクセスできるのは私だけではないため、そこで変更が加えられた可能性があります。セキュリティまたはファイアウォールの設定が問題の原因である可能性があることを少し心配しています. 最近、新しいウイルス保護ソフトウェアをインストールしたので、それが原因である可能性があります。

  1. これHttpWebRequestは何らかの方法でブロックされたり、何らかの形で失敗したりする適切ではありませんか?
  2. この特定のプログラムに悪影響を与える可能性のある特定のサーバー設定を確認する必要がありますか?

これが私のコードです:

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)
4

1 に答える 1

0

Authorizationヘッダーに問題があるようです。NetworkCredential次のように、リクエストで代わりに使用してみてください。

serverRequest.Credentials = new NetworkCredential(username, password);
于 2013-07-12T17:57:27.390 に答える