xDBプログラミング:セッションを強制終了してインタラクションデータをコレクションDBに書き込む方法

samatsu 7/23/2015 2072 N/A xDB Programming

SitecoreではWebサイトに訪問した訪問者(コンタクト)や訪問情報(インタラクション)はセッションが終了(Session_Endイベント)したタイミングでコレクションDBであるMongoDBに反映されます。

セッションタイムアウトの時間は既定では 20分に設定されています。この時間自体は一般的なタイムアウト時間だと思いますが、開発時に動作検証のために20分も待っているのは非効率です。

開発環境のみWeb.configを変更してセッションのタイムアウトを2分や3分など極端に短くすることもできますが、それをやると今度はSitecoreのインタフェースを使っているときに頻繁にタイムアウトしてログイン画面が表示されてしまいます。

一番簡単な解決策は、プログラムでセッションを強制終了する方法です。開発環境でセッションを終了させるためのWebフォームを配置し、そのWebフォームにボタンを配置してボタンをクリックしたらセッションを終了させるようにできます。

例えば、ボタンがクリックされたら次のようなコードを実行するようにします。サンプルでbtnSessionEnd_Clickはフォームに配置したボタンをクリックしたときに呼び出されるイベントハンドラです。

protected void btnSessionEnd_Click(object sender, EventArgs e)
{
    Session.Abandon();
    Sitecore.Web.WebUtil.Redirect("/");
}

Session.Abandan()を呼び出すことで、セッションを強制的に終了しています。

Session_Endイベントが発生するとコレクションDB(MongoDB)のコレクションにインタラクションやコンタクトのデータが反映されます。