For .NET Framework 4.8.1 WCF metadata retrieval in HTTP GET mode, configure the earlier metadata request rather than only the eventual SOAP client. Its protected GetWebRequest hook can apply a separately owned route:

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;
    }
}

The types come from System.Net and System.ServiceModel.Description. Construct this client with the intended WebProxy and use HttpGet mode for the WSDL URL. Put the proxy account on that object; metadata-server authentication is separate.

Follow imports if the root WSDL succeeds but resolution fails later. Other WSDLs and schemas can use different hosts or protocols.

Choose the corresponding extension for another retrieval mode. WS-MetadataExchange uses a channel, whose creation hook is GetChannelFactory; its binding and proxy settings are not universally replaced by an HttpWebRequest override.

A default application proxy can suffice when all participating legacy components should share it. The subclass is for explicit metadata ownership within this API family. Generated SOAP invocations still need their own runtime transport configuration. For a BasicHttpBinding client, check ProxyAddress and UseDefaultWebProxy together.

Related articles