我是WCF的新手并尝试在会话管理方面完成一些事情:
我想在打开/创建新会话时在服务器上获取一个事件。
我希望能够关闭所有打开的会话,或者获取打开的会话列表并关闭特定的会话(当然是在服务器上)。
我该怎么做呢?谷歌出人意料地无益......
答案 0 :(得分:1)
答案将是很多“它取决于”。一些绑定不是会话感知的。例如,BasicHttpBinding之类的东西不会自己进行会话,但如果你启用ASP.net compatability mode,你可以让ASP.net的会话管理工作。然后,您将能够使用global.asax中的Session_Start和Session_End在会话打开或关闭时执行您想要的操作。
你应该查看你正在使用的绑定,看看它是否内置了某种会话支持,因为其中有些支持。
如果您正在进行身份验证,您还可以通过将请求映射到经过身份验证的用户并将会话记录存储在数据库中来模仿会话管理系统。
我会说在任何情况下我都不确定会议的“结束”是什么。除非您还以某种方式锁定用户,否则下一个请求将立即启动新会话(如果前一个会话结束)。也许如果你解释你想要实现的目标(以及为什么),我们可以提供进一步的帮助。
答案 1 :(得分:0)
我同意Tridus对此的回答。您可以通过启用ASP.NET兼容模式将Session与WCF服务一起使用。
检查http://msdn.microsoft.com/en-us/library/aa702542.aspx初读。请记住 - 服务原则上应该是无国籍的。