.NET Framework 上の WCF: HTTP GET メタデータのプロキシ設定
最終的な SOAP サービスクライアントとは別に、HTTP インポートを含む従来の WCF メタデータ取得経路を構成します。
.NET Framework 4.8.1 で HTTP GET モードの WCF メタデータ取得を行うには、最終的な SOAP クライアントだけでなく、先行するメタデータ要求を構成します。保護された GetWebRequest フックで、個別に管理されたルートを適用できます:
class RoutedMetadataClient : MetadataExchangeClient
{
private readonly IWebProxy route;
public RoutedMetadataClient(IWebProxy route)
{
this.route = route;
}
protected override HttpWebRequest GetWebRequest(
Uri location, string dialect, string identifier)
{
HttpWebRequest request =
base.GetWebRequest(location, dialect, identifier);
request.Proxy = route;
return request;
}
}型は System.Net と System.ServiceModel.Description に由来します。このクライアントを目的の WebProxy で構築し、WSDL URL には HttpGet モードを使用します。プロキシ アカウントはそのオブジェクトに設定します。メタデータ サーバーの認証は別です。
ルート WSDL が成功しても後で解決に失敗する場合は、インポートをたどってください。他の WSDL とスキーマは別のホストやプロトコルを使用できます。
別の取得モードには対応する拡張機能を選びます。WS-MetadataExchange はチャネルを使用し、その作成フックは GetChannelFactory です。そのバインディングとプロキシ設定は HttpWebRequest のオーバーライドで一律に置き換わるものではありません。
参加するすべてのレガシ コンポーネントが共有すべき場合は、既定のアプリケーション プロキシで足りることがあります。サブクラスはこの API ファミリ内でメタデータを明示的に所有するためのものです。生成された SOAP 呼び出しには、依然として独自の実行時トランスポート構成が必要です。BasicHttpBinding クライアントでは、ProxyAddress と UseDefaultWebProxy を併せて確認してください。