【发布时间】:2016-08-05 13:07:48
【问题描述】:
我们正在开发一些原生移动应用程序。这些应用程序使用 REST 服务。它是 WCF 服务。我们在 WCF 中使用HttpContext.Current.Session["Key"]=Value 来保存一些细节。
WCF 服务可以保存 Windows 客户端的会话信息吗?
参考:WCF sessions with a wsHttpBinding and without windows security
【问题讨论】:
我们正在开发一些原生移动应用程序。这些应用程序使用 REST 服务。它是 WCF 服务。我们在 WCF 中使用HttpContext.Current.Session["Key"]=Value 来保存一些细节。
WCF 服务可以保存 Windows 客户端的会话信息吗?
参考:WCF sessions with a wsHttpBinding and without windows security
【问题讨论】:
WCF 服务能否保存 Windows 客户端的会话信息?
首先,链接的文章不相关,因为虽然 wsHttpBinding 确实支持会话,但它不是 RESTful 绑定。
如果您在 WCF 中托管 REST 服务,您将无法访问本机会话,因为 webHttpBinding(WCF 中用于 REST 服务的绑定)不支持会话。
因此,尽管您可以访问 HttpContext.Current,但 Session 属性将为空。
其次,使用会话违反 RESTful 原则是有争议的(请参阅帖子 here)。这是因为 HTTP 在本质上被设计为无状态的。
如果您确实需要会话,您要么必须使用基于 SOAP 的绑定(如 wsHttpBinding),要么实现某种方式在服务本身上为给定用户存储状态。
【讨论】: