76

Web サービスを呼び出すと、次のエラーが発生します。

「リモート サーバーがエラーを返しました: (407) プロキシ認証が必要です」。

一般的なアイデアが得られ、追加することでコードを機能させることができます

myProxy.Credentials = NetworkCredential("user", "password", "domain");

または、コードで DefaultCredentials を使用します。私の問題は、Web サービスへの呼び出しがこれなしで本番環境で機能することです。

Machine.config を含む非コード ソリューションがあるようですが、それは何ですか? 現時点では、製品ボックスの machine.config ファイルにアクセスして、それがどのように見えるかを確認することはできません。次のように machine.config を更新しようとしましたが、それでも 407 エラーが発生します。

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <bypasslist>
            <clear />
        </bypasslist>
        <proxy proxyaddress="myproxy:9000"
               usesystemdefault="false"
               bypassonlocal="true"
               autoDetect="False" />
    </defaultProxy>
</system.net>
4

7 に答える 7

143

これを構成に追加するだけです

<system.net>
    <defaultProxy useDefaultCredentials="true" >
    </defaultProxy>
</system.net>
于 2012-09-28T06:31:08.320 に答える
54

次のコードでは、資格情報をハードコーディングする必要はありません。

service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
于 2012-08-20T10:13:13.940 に答える
19

ファイアウォールの専門家に確認してください。PRODサーバーのファイアウォールを開くため、プロキシを使用する必要はありません。

あなたのヒントが私の問題を解決するのを助けてくれてありがとう:

407エラーを回避するには、2つの場所にクレデンシャルを設定する必要がありました。

HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password", "domain");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");

そして出来上がり!

于 2010-09-14T06:59:33.057 に答える
6

おそらく、prod のマシンまたは web.config には、構成の設定があります。おそらくプロキシ タグは必要ありません。

<system.net>
    <defaultProxy useDefaultCredentials="true" >
        <proxy usesystemdefault="False"
               proxyaddress="http://<ProxyLocation>:<port>"
               bypassonlocal="True"
               autoDetect="False" />
    </defaultProxy>
</system.net>
于 2010-04-05T22:51:45.937 に答える
3
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;

webRequest.Proxy = WebRequest.DefaultWebProxy;

webRequest.Credentials = new NetworkCredential("user", "password");

webRequest.Proxy.Credentials = new NetworkCredential("user", "password");

成功です。

于 2012-06-08T13:09:25.643 に答える
2

同様のプロキシ関連の問題がありました。私の場合、以下を追加するだけで十分でした。

webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
于 2011-12-05T13:12:44.297 に答える