0

背景: 外部 Web サービスの呼び出しに失敗し始めたリモート サイトにインストールされたサービスがあります。サイトのネットワーク\サポート エンジニアによると、プロキシは必要ないはずですが、WebRequest を実行しようとすると例外が返されます。

System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.

例外は比較的自明ですが、コードを見ると、WebRequest の呼び出しでプロキシが指定されておらず、app.config ファイルでプロキシが定義されていません。

WebRequest.Proxy の MSDN ドキュメントを参照してください。

"リクエストをプロキシするために使用する IWebProxy オブジェクト。デフォルト値は、GlobalProxySelection.Select プロパティを呼び出すことによって設定されます。"

次に、GlobalProxySelection.Select のドキュメントを参照します。

"グローバル HTTP プロキシを取得または設定します。"

GlobalProxySelection.Select がアプリケーションのどこにも設定されていない場合、デフォルト値はどこから来るのでしょうか? また、グローバル HTTP プロキシを設定できる他のグローバル構成ファイルはありますか?

4

2 に答える 2

0

プロキシを手動で設定する必要があります。デフォルトのシステムプロキシを使用する場合は、次のようにすることで実行できます。(Windowsのインターネット設定)

myRequest.Proxy = WebRequest.GetSystemWebProxy();

ネットワークがプロキシを使用せずにサーバーへのアクセスを直接ブロックしているため、エラーが発生します。

于 2012-05-30T01:17:38.720 に答える
0

これで問題が直接解決されるわけではありませんが<defaultProxy />、 app.config / web.config の要素を<system.net>withで試すことをお勧めします。useDefaultCredentials="true"これにより、アプリケーションがプロキシ経由で認証されるため、特別なバイパス ルールがまったく必要なくなる可能性があります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>
</configuration>
于 2012-08-02T23:08:14.330 に答える