3

プログラムをプロキシ経由で動作させようとしていますが、動作させたくありません (System.Net.WebException: The operation has timed out)。プロキシがなければすべて問題ありません

コードは次のとおりです。

        string proxy = "154.46.33.157";
        int port = 8080;
        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = "email=" + email + "&pass=" + pass;
        byte[] data = encoding.GetBytes(postData);
        WebProxy myproxy = new WebProxy(proxy, port);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("SITE");
        WebHeaderCollection myWebHeaderCollection = request.Headers;
        request.CookieContainer = sCookie;
        request.Method = "POST";
        request.Proxy = myproxy;
        request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
        request.ContentLength = data.Length;
        request.Host = "HOST";
        request.UserAgent = "[UA]";
        request.Referer = "reffer";
        request.KeepAlive = false;
        request.Timeout = 20000;

        Stream stream = request.GetRequestStream(); // TIMEOUT HERE
        stream.Write(data, 0, data.Length);
        stream.Close();
        request.GetResponse()
            .Close();

同時に、このコードはうまく機能します

        string proxy = "154.46.33.157";
        int port = 8080;
        WebProxy myproxy = new WebProxy(proxy, port);
        WebRequest req = WebRequest.Create("SITE");
        req.Timeout = 5000;
        req.GetResponse();

プロキシは生きています。IE でテストしました。修正するにはどうすればよいですか?

4

2 に答える 2

1

web.configまたはapp.configアプリケーションの種類に応じて、次のいずれかを追加してみてください。

<configuration>

    <system.net>
        <defaultProxy>
            <proxy
                usesystemdefaults="true"
                proxyaddress="http://154.46.33.157:8080"
                bypassonlocal="true" />
              <bypasslist
                <add address="[a-z]+\.contoso\.com" />
            </bypasslist>
        </defaultProxy>
    </system.net>          

     <!-- The rest of your config here ... -->

</configuration>

詳細とユーザー資格情報などの追加パラメーターは、http: //msdn.microsoft.com/en-us/library/kd3cf2ex (v=vs.110).aspx で確認できます。

于 2014-04-01T11:36:11.423 に答える
1

いくつかの提案:

  1. プロキシに IP アドレスを使用しますか?
  2. そのプロキシにログインする必要がありますか? proxy.Credentials = new NetworkCredential(User, Password);
  3. ヘッダーの数を減らして試してみてください。いくつかのヘッダーから始めて、うまくいく場合は 1 つずつ追加していきます

UPD: ホストの場合 - 有効な URL ですか? 有効なポート番号を入力しましたか? www.contoso.com:8080 のように

于 2014-04-01T11:38:48.963 に答える