0

vs 2005 を使用して、C# で 2.0 フレームワーク用のコンソール アプリケーションを作成しました。

URL で実行するHttpWebRequest.GetResponseと、最初の 1 つ (pc) は正常に動作しますが、最後の 1 つ (webservice) はエラーを返します。

(404) Not Found. The URL is a trusted site. 
Internet sites and local intranet sites are detected successfully. 
But trusted sites only could not be detected. 

どうしてか分かりません?

これはコードです:

private bool getSiteConnStatus(string url)
{
  bool result = true;
  Uri uri = new Uri(url);
  try
  {
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);          
      WebProxy SCProxy = new WebProxy("123.123.123.123");          
      SCProxy.Credentials = new NetworkCredential();                
      request.Proxy = SCProxy;          

      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
      if (response == null || response.StatusCode != HttpStatusCode.OK)
      {
          result = false;
      }
      response.Close();
  }
  catch (Exception ex)
  {
      result = false;
  }
  return result;
}

~~~~~~~~~~

解決しました。

Proxy 情報は、各サイトが呼び出すたびに変更されました。そのため、以下にいくつかの行を追加しました。 参考サイト

 private bool getSiteConnStatus(string url)
    {
        bool result = true;
        Uri uri = new Uri(url);
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            ***WebProxy SCProxy;
            if (request.Address.Host == "test.net")
            {
                SCProxy = new WebProxy("111.111.111.111", 8080);
            }
            else
            {
                SCProxy = new WebProxy("123.123.123.123", true);
            }
            request.Proxy = SCProxy;***

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (response == null || response.StatusCode != HttpStatusCode.OK)
            {
                result = false;
            }
            response.Close();
        }
        catch (Exception ex)
        {
            result = false;
        }
        return result;
    }
4

1 に答える 1

0

ブラウザから URL にアクセスしてみてください (サーバー上) - 動作する場合、ブラウザ エージェントは、特定のポートとの間で外部世界と通信するように構成されています。

ファイアウォール ポリシーと、外部への接続を妨げている特定のユーザー エージェント文字列を確認してください。

ブラウザから試す場合は、プロキシ認証も確認してください(ここではIEを想定しています)。ブラウザが自動的に提供する場合があります / NTLM 認証文字列。あなたのプログラムができないかもしれない場所はどこですか?

于 2013-01-29T06:15:59.927 に答える