Для клиента ASMX на основе HttpWebClientProtocol .NET Framework настройте открытое свойство Proxy до первой сетевой операции:

var service = new ReportsService();
service.Proxy = new WebProxy("http://proxy.example:8080")
{
    Credentials = proxyAccount
};

ReportsService — это сгенерированный класс, а proxyAccount берётся из развёртывания. Учётные данные службы SOAP отдельные. Это присваивание не нужно повторять внутри каждой сгенерированной операции.

Если изменение касается базового параметра запроса или инструментирования, используйте переопределяемый метод GetWebRequest(Uri) старой базовой реализации. Если сгенерированный класс частичный, держите соответствующее частичное объявление в отдельном компилируемом файле; иначе переопределение может предоставить подходящий производный клиент. Вызывайте базовую реализацию и сохраняйте обычное построение запроса.

Это размещение переживает обновление веб-ссылки: повторная генерация может заменить ручные правки в Reference.cs, а отдельно поддерживаемые расширения остаются воспроизводимыми.

Меняйте только то поведение запроса, которое действительно нужно. Копирование обходного решения KeepAlive может повлиять на повторное использование соединений и проверку подлинности, зависящую от состояния соединения.

Это модель ASMX/.NET Framework. WCF и другие стеки SOAP имеют собственные транспортные интерфейсы. Выберите поддерживаемую настройку клиента, прежде чем вводить собственное расширение.

Похожие статьи