会话在典型会话期间何时放弃?

时间:2015-09-29 16:08:27

标签: asp.net session sitecore

我试图figure out an issue I'm having with sitecore。我想知道我的问题基本上是他们reliance on Session.Abandon()的问题:

  

出于性能原因,Sitecore只会将联系人数据写入xDB (这是mongo)   会议结束。

这个逻辑看起来有些缺陷(除非我误解了如何在Asp.Net中管理会话)。

  • 在什么时候(没有显式调用Session.Abandon())会在此模型中刷新会话?即什么时候会触发session_end事件?
  • 您能保证始终可以调用逻辑吗? 会话终止而不会触发Abandon事件?例如,当app_pool被回收时。

我试图解决这个问题,因为它可以解释我遇到过的问题,其中数据在会话中很好但是会间歇性地写入mongoDb

1 个答案:

答案 0 :(得分:2)

我认为在会话中构建数据然后将数据刷新到MongoDb的策略适合xDb。

xDb被设计为高容量,因此有意义的是聚合数据而不是不断地将数据写入数据库表。这是DMS之前工作的方式,并且不能很好地扩展。

我认为会话结束非常可靠,Sitecore为您提供了持久会话(inproc,mongo,SQL服务器)的各种选项,建议将MongoDb和SQL Server用于生产环境。您可以使用Contact Repository api直接将联系人数据写入MongoDb,但是为了实时捕获数据,您应该使用Tracker api。使用跟踪器api时,据我所知,将数据导入MongoDb的唯一方法是刷新会话。

如果您需要将数据刷新到xDb以进行测试,则Session.Abandon()将起作用。我在这里有一个模块,您可以使用它来创建联系人然后刷新会话,这样您就可以通过检查MongoDb来查看会话放弃的可靠性。

https://marketplace.sitecore.net/en/Modules/X/xDB_Contact_Creator.aspx