2

私はこれが何度も尋ねられたことを知っています。私はこことこのような他のサイトのほとんどすべての投稿を読みました.

http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/2931d21c-9ca8-4256-b213-915fad4c941b/

役に立たない。環境はこちら

Windows Server 2008 R2 64 ビット Visual Studio 2008 .Net Framework 3.5

これが私が試したことです

コードを使用してプロキシ認証を行いました

WebRequest req = WebRequest.Create(requestUri + data);
req.Proxy = new System.Net.WebProxy(<ProxyURL>:<port>",true);
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
WebResponse resp = req.GetResponse();

これは機能しましたが、アプリの速度が低下していたので、自分が行った machine.config ファイルを編集できることがわかりました。それもうまくいきました!

    <system.net>
      <defaultProxy
      useDefaultCredentials="true">
      <proxy
        proxyaddress="<proxyURL>:<port>"
        bypassonlocal="True"/>
     </defaultProxy>
   </system.net>

少なくとも 1 日か 2 日。その後、失敗し始めました。

私はそれをこれに編集しました

    <system.net>
     <defaultProxy
       useDefaultCredentials="true">
       <proxy usesystemdefault="True"/>
       </defaultProxy>
    </system.net>

私の理解では、これは IE 設定を使用してプロキシに接続しますが、それでも機能しません。私もこのコードを試しました

WebProxy proxy = new WebProxy(<proxy>:<port>);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(requestUri + data), "BASIC", new NetworkCredential(<username>,<password>));
proxy.Credentials = myCache;
request.Proxy = proxy;
request.Method = "GET";

そして、これはうまくいきませんでした。

注: machine.config ファイルを自分のコンピューター (Win XP) にコピーし、そこから (プロキシ コードなしで) .exe を実行すると、正常に動作します。

64 ビット OS で行う必要がある別のことはありますか? また、サーバーで IE8 を開き、URI に問題なくアクセスできます。目標は、コードでユーザー名パスワードを指定することなく、プロキシを事前認証することです。

4

2 に答える 2

3

とにかく、HttpWebRequest は既定のインターネット設定 (IE) プロキシを使用するため、サーバー上の Internet Explorer から正常に動作する場合は、コードからも問題ないはずです (同じユーザー アカウントで実行されている場合)。

machine.config を元に戻します。

IIS で確認することの 1 つは、Windows 認証アプレットのプロバイダーを構成できることです。これにより、NTLM と Kerberos がプロバイダとして一覧に表示されます。それらを切り替えて、それが違いを生むかどうかを確認します (たとえば、NTLM がリストの一番上にある場合は、Kerberos を一番上に移動します)。このマシンに IIS がないため、正確な手順を説明できず申し訳ありません。

それでも問題が解決しない場合は、サーバーで Fiddler を実行して、要求と応答の流れをキャプチャし、より多くの手がかりを得ることをお勧めします。

于 2013-03-30T09:04:13.717 に答える