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