Автоматически отправить сообщение в WCF - PullRequest
0 голосов
/ 30 января 2009

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

  • Перехватывать каждый звонок, сделанный веб-сервису,
  • Проверьте ответное сообщение для этого конкретного исключения
  • Если найдено, снова вызовите Authenticate, чтобы получить новый идентификатор сеанса, и снова отправьте исходное сообщение с обновленным идентификатором сеанса

Я гуглил это безрезультатно. Самая близкая вещь, которую я мог найти, сказала мне, что я мог бы сделать это на канальном уровне, но не дал пример кода вообще.

Обратите внимание, что я хочу сделать это в прокси-классе, а не в коде, который вызывает прокси-класс. Таким образом, вызывающие класс прокси не должны беспокоиться об автоматической повторной аутентификации. Я наследую от автоматически сгенерированного прокси и выполняю настройку WCF программно.

1 Ответ

0 голосов
/ 06 февраля 2009

Я бы попытался обернуть "геттер" для вашего клиента WCF так, чтобы перед всеми вызовами вызывалась функция аутентификации.

    public WCFClient GetServiceInstance()
    {
        client.DoAuth();
        return client;
    }

Вы также можете добавить условие к этому методу, чтобы вызывать DoAuth () только раз в 1 минуту или около того.

...