Я использую WCF для общения с веб-сервисом Java. Этот веб-сервис имеет метод Authenticate, который возвращает идентификатор сеанса. Каждый запрос к этому веб-сервису должен содержать этот идентификатор сеанса в заголовке SOAP. Если время сеанса истекло, при вызове любого метода возвращается SoapException. Я хотел бы:
- Перехватывать каждый звонок, сделанный веб-сервису,
- Проверьте ответное сообщение для этого конкретного исключения
- Если найдено, снова вызовите Authenticate, чтобы получить новый идентификатор сеанса, и снова отправьте исходное сообщение с обновленным идентификатором сеанса
Я гуглил это безрезультатно. Самая близкая вещь, которую я мог найти, сказала мне, что я мог бы сделать это на канальном уровне, но не дал пример кода вообще.
Обратите внимание, что я хочу сделать это в прокси-классе, а не в коде, который вызывает прокси-класс. Таким образом, вызывающие класс прокси не должны беспокоиться об автоматической повторной аутентификации. Я наследую от автоматически сгенерированного прокси и выполняю настройку WCF программно.