WCF应用程序中的会话变量

时间:2010-03-15 17:34:19

标签: c# .net wcf web-services

我需要在我的WCF应用程序中使用或激发一个非常简单的会话对象。

我只需要在调用开始时存储一些值,我需要访问这些值,同时我会通过一些不同的服务方法。

Asp.NET会话非常适合用于此,因此我需要找出WCF应用程序上可用于存储此类值的内容。

注意:这只是一个每次通话的会话,我不需要在从客户端到服务等的不同调用之间保留此会话。

2 个答案:

答案 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>

好奇,你确定你需要会话吗?