我需要在我的WCF应用程序中使用或激发一个非常简单的会话对象。
我只需要在调用开始时存储一些值,我需要访问这些值,同时我会通过一些不同的服务方法。
Asp.NET会话非常适合用于此,因此我需要找出WCF应用程序上可用于存储此类值的内容。
注意:这只是一个每次通话的会话,我不需要在从客户端到服务等的不同调用之间保留此会话。
答案 0 :(得分:4)
您所描述的内容(在单个请求的生命周期内保留的自定义上下文)更像是HttpContext.Items
而不是ASP.NET会话。
WCF确实有一个名为OperationContext
的类,类似于HttpContext
。它没有自定义上下文的Items
属性,但this blog post描述了一种可用于实现所需内容的技术。
答案 1 :(得分:2)
你必须做几件事。
在主机上设置 aspNetCompatibilityEnabled = true (在system.ServiceModel | serviceHostingEnvironment内)
服务(不是合同) - 应该归结为:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
最后,您必须将绑定上的allowCookies设置为true。
<basicHttpBinding>
<binding name="SessionBinding" allowCookies="true">
</basicHttpBinding>
好奇,你确定你需要会话吗?