- PR -

Session_Endでセッション切れる直前に、セッション変数をとりたい場合

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-06-06 18:36
こんにちは。
お世話になってます。

現在、ASP.NET+VB.NETで開発していますが、クライアントのセッションが切れる直前に、
セッション変数を使って処理したいことがあります。

Session_Endイベントではすでに、セッション変数は取れないようです。

この場合、どのようにとればいいかご存知の方はおられませんか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-06-06 21:37
Sessoin.EndはInProcでしか働かないなど制約が多いので頼らないほうが楽と思います。

Session.Start時に必要な情報をデータベースに格納しておき、PostBackの度に時間を更新。別プロセスからポーリングしておいて、一定時間経過したものを定期的に処理するとかじゃ駄目ですか?
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2005-06-07 08:48
関係ないかもしれませんが
セッション情報をずっととっておきたい場合にはアウトプロセスの
設定にするとTimeoutできれることもなくなかなか良いですよ。
ワーカプロセスとは別管理でメモリ上で管理されます。

設定方法は
@. State Serviceを自動起動に変更

 State Serviceの開始/停止は、[コントロール パネル]−[管理ツール]−[サービス]から行う。
[サービス]ダイアログから[ASP.NET State Service]を右クリックし、表示されたコンテキスト・
メニューから[開始]をクリックする。→[自動]に変更する。

A.web.configの設定の変更

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=10.24.131.136:42424"
stateNetworkTimeout="10" />
</system.web>
</configuration>

ここが変わるところ
sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"

の2点を変更する

Bregeditを起動

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters
\AllowRemoteConnectionを1に変更する。

負荷がかかるシステムには結構いいですよ。
1

スキルアップ/キャリアアップ(JOB@IT)