RESTful WCF服务可以保存会话数据吗?

时间:2016-04-14 06:28:08

标签: c# wcf wcf-rest

我们正在开发一些原生移动应用程序。这些应用程序使用REST服务。它是WCF服务。我们在WCF中使用HttpContext.Current.Session["Key"]=Value来保存一些细节。

WCF服务可以保存Windows客户端的会话信息吗?

参考:WCF sessions with a wsHttpBinding and without windows security

1 个答案:

答案 0 :(得分:2)

  

WCF服务可以保存Windows客户端的会话信息吗?

首先, - 链接的文章不相关,因为虽然 wsHttpBinding 支持会话,但它不是RESTful绑定。

如果您在WCF中托管REST服务,则无法访问本机会话,因为 webHttpBinding (WCF中用于​​REST服务的绑定)不支持会话。

因此,虽然您可以访问HttpContext.Current,但Session属性将为null。

其次,可以说会话的使用违反了RESTful原则(参见帖子here)。这是因为HTTP本质上是一个无状态的。

如果确实需要会话,则要么必须使用基于SOAP的绑定(如wsHttpBinding),要么实现某种方式为服务本身的给定用户存储状态。