Клиент WCF, использующий несколько asmx-сервисов, которые используют HTTP-куки - PullRequest
3 голосов
/ 14 октября 2008

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

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

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

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

Как я могу поделиться cookie-файлом HTTP на нескольких конечных точках.

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

Ответы [ 3 ]

5 голосов
/ 19 декабря 2008

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

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

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

UPDATE:

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

0 голосов
/ 10 декабря 2008

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

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

0 голосов
/ 15 октября 2008

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

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

...