Клиент WCF, использующий несколько asmx-сервисов, которые используют HTTP-куки

Я пытаюсь использовать один и тот же файл cookie http (фактически asmx sessionid) в нескольких конечных точках клиента WCF.

Сервер имеет несколько конечных точек, одна из которых:

AuthenticationService.asmx
Login () <- Создает HTTP-cookie, который является сервером ASP.NET sessionid
Выйти () <- Удаляет те же куки

SomeOtherService.asmx
DoSomeThing () <- восстанавливает действительный файл cookie из AuthenticationService.asmx.

Как я могу поделиться куки HTTP через несколько конечных точек.

У меня нет контроля над кодом сервера, и я должен использовать WCF.

3 ответа

Посмотрите на эту статью.
В нем объясняется, как вручную управлять файлами cookie в прокси-клиенте WCF. Точнее, WCF предоставляет API, который позволяет извлекать куки-файлы из ответа HTTP, и таким же образом вручную устанавливать куки-файл для HTTP-запроса.

Вам нужно будет использовать этот механизм для извлечения файла cookie из ответа HTTP, полученного данным клиентским прокси-сервером, и назначить этот же файл cookie для запроса HTTP, отправленного другим клиентским прокси-сервером другой службе.

В этой теме на форумах MSDN объясняется, как это сделать для каждого вызова службы в приложении с помощью инспекторов сообщений WCF.

ОБНОВИТЬ:

Я написал сообщение в блоге о том, как решить эту проблему. Вы можете прочитать это здесь.

Я просто столкнулся с той же проблемой. Если клиент WCF общается только с одной службой ASP.NET, то это легко. Просто установите для свойства AllowCookies в BasicHttpBinding значение true, и прокси-сервер службы автоматически обработает файл cookie идентификатора сеанса ASP.NET.

Но у меня такая же ситуация, как у вас, когда есть 2 службы ASP.NET, с которыми мне нужен мой клиент WCF. Первый из них выдает файл cookie идентификатора сеанса ASP.NET, и мне нужно иметь возможность передавать этот файл cookie в вызовах ко второму сервису. Кто-нибудь знает как это сделать?

Если вы включили режим совместимости asp.net, вы можете получить доступ к сеансу http из своей службы WCF, поэтому вам не нужно добавлять файлы cookie для этого.

http://msdn.microsoft.com/en-us/library/ms752234.aspx

Другие вопросы по тегам