从WebHttpBinding访问WCF服务中的会话

时间:2011-09-27 13:47:31

标签: asp.net wcf

我正在使用WCF服务(通过WebGet属性)。

我正在尝试从WCF服务访问Session,但是HttpContext.Current为null

我添加了AspNetCompatibilityRequirements并编辑了web.config但我仍然无法访问会话。

是否可以一起使用WebGet和Session?

谢谢!

2 个答案:

答案 0 :(得分:5)

是的,有可能。如果您修改web.config

<system.serviceModel>
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

并添加AspNetCompatiblityRequirementsHttpContext.Current应该可用。

再次检查所有内容,也许你已将属性放在错误的位置(界面而不是类?)。

答案 1 :(得分:4)

带会话的RESTfull服务?

请参阅此处的精彩讨论:Can you help me understand this? "Common REST Mistakes: Sessions are irrelevant"

http://javadialog.blogspot.co.uk/2009/06/common-rest-mistakes.html(第6点)

http://www.peej.co.uk/articles/no-sessions.html

保罗·普雷斯科德的话:

  

会话无关紧要。

     

客户端不需要“登录”或“启动连接”。 HTTP身份验证已完成   自动发送每条消息。客户端应用程序是消费者   资源,而不是服务。因此没有什么可登录的!   假设您在REST网络服务上预订航班。您   不要创建与服务的新“会话”连接。相反,你问   “行程创建者对象”为您创建一个新的行程。您可以   开始填补空白,但后来得到一些完全不同   网上其他地方的组件,以填补其他一些空白。有   没有会话所以没有迁移会话状态的问题   客户端。服务器中也没有“会话亲和力”的问题   (尽管仍有负载平衡问题需要继续)。