Отказ от ответственности: на самом деле вы не должны ничего этого делать, потому что он заставляет службу WCF вести себя как веб-служба. Но если вам нужны куки, читайте дальше.
Если вам нужен только идентификатор сеанса, вы можете получить его по адресу:
OperationContext.Current.SessionId
Если вам нужны куки-файлы, вам нужно прыгнуть через несколько обручей. Суть этого (1) установить совместимость с asp.net и (2) ссылаться на свойства HttpContext.Current.
Ваша служба должна будет использовать wsHttpBinding (или другую привязку, поддерживающую сеансы). Если вы создадите свой проект в качестве службы WCF, размещенной в IIS, вы получите их по умолчанию. Вам также необходимо установить совместимость с asp.net в конфигурационном файле.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<bindings>
<wsHttpBinding>
<binding name="MyBinding" allowCookies="false" ... </binding>
</wsHttpBinding>
</bindings>
(см. Ссылку здесь , чтобы узнать, почему у меня allowCookies = false)
Чтобы включить сеансы, в вашем сервисном контракте WCF установите следующее
[ServiceContract(SessionMode=SessionMode.Required)]
public interface IMyWcfService {...}
Возможно, вы также захотите установить ServiceBehavior для самой службы (PerSession по умолчанию), и вам необходимо установить совместимость с asp.net.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]
public class MyWcfService : IMyWcfService {...}
Некоторые релевантные свойства, к которым у вас есть доступ:
// Gives you the current session id as a string
HttpContext.Current.Session.SessionID
// Indicates whether the service is using sessionless cookies
HttpContext.Current.Session.CookieMode
// Indicates whether the session id is stored in the url or in an HTTP cookie
HttpContext.Current.Session.IsCookieless
// The cookies themselves
HttpContext.Current.Request.Cookies
HttpContext.Current.Response.Cookies
// The session and cache objects
HttpContext.Current.Cache
HttpContext.Current.Session
Ссылка на сеансы в службах WCF:
http://msdn.microsoft.com/en-us/library/ms733040.aspx
HTH,
Джеймс