63

プロキシ経由で別のマシン上の Web サービスにアクセスするように Web サイトを構成する必要があります。プロキシを使用するように Web サイトを構成できますが、プロキシが必要とする資格情報を指定する方法が見つかりません。それは可能ですか? これが私の現在の構成です:

<defaultProxy useDefaultCredentials="false">
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>

コードを介してこれを行うことができることは知っていますが、Web サイトで実行されているソフトウェアはクローズド ソースの CMS であるため、これを行うことはできません。

これを行う方法はありますか?MSDNはあまり役に立ちません..

4

4 に答える 4

106

はい、現在のコードを変更せずに独自の資格情報を指定することができます。ただし、一部の小さなコードが必要です。

このクラスでSomeAssembly.dllというアセンブリを作成します。

namespace SomeNameSpace
{
    public class MyProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("user", "password"); }
            //or get { return new NetworkCredential("user", "password","domain"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://my.proxy:8080");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

これを構成ファイルに追加します。

<defaultProxy enabled="true" useDefaultCredentials="false">
  <module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>

これにより、新しいプロキシがリストに「挿入」されます。既定の資格情報がないため、WebRequest クラスは最初にコードを呼び出し、独自の資格情報を要求します。アセンブル SomeAssembly を CMS アプリケーションの bin ディレクトリに配置する必要があります。

これは何らかの静的コードであり、ユーザー、パスワード、URL などのすべての文字列を取得するには、独自のConfigurationSectionを実装するか、 AppSettingsに情報を追加する必要があります。これははるかに簡単です。

于 2008-10-11T18:29:33.220 に答える
20

web.configでプロキシネットワークのクレデンシャルを指定する良い方法は見つかりませんでしたが、web.configにこれを含めることで、非コーディングソリューションを使用できる場合があります。

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

これを実現するための重要な要素は、IIS設定を変更し、プロセスを実行するアカウントがプロキシサーバーにアクセスできるようにすることです。プロセスがLocalServiceまたはNetworkServiceで実行されている場合、これはおそらく機能しません。ドメインアカウントが必要になる可能性があります。

于 2009-05-17T23:03:13.677 に答える
8

Windows Credentials Manager でプロキシ サーバーの新しい汎用資格情報を追加することにより、資格情報を指定できます。

1 Web.config で

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. コントロール パネル\すべてのコントロール パネル項目\資格情報マネージャーで >> 汎用資格情報を追加します。

インターネットまたはネットワーク アドレス: あなたのプロキシ アドレス
ユーザー名: あなたのユーザー名
パスワード: あなたが渡す

この構成は、コードを変更せずに機能しました。

于 2015-06-26T21:28:11.903 に答える
1

ディレクトリ サービス/LDAP ルックアップを使用して、この目的を果たすことができます。インフラストラクチャ レベルでいくつかの変更が必要ですが、ほとんどの運用環境にはそのような規定があります

于 2008-10-09T11:38:39.677 に答える