- PR -

Session_Endイベントについて

投稿者投稿内容
Safe_WaY
会議室デビュー日: 2004/09/28
投稿数: 18
投稿日時: 2005-02-23 09:57
お世話になります。
現在VB.netでWEBアプリを開発しております。

開発しておりますシステムはログオフ概念がなく
ログイン時にオラクルに接続をして
接続情報(コネクションクラス)をセッションに
持たして、セッション毎に接続を確立させております。

現在、Session_Endイベントにて
上記、接続情報をlogClassといった独自のクラス内に
もっております。その接続情報の切断タイミングとして
下記のように 切断しようとしております。

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
'ログイン情報のセッション設定
Dim LogInf As logClass
logClass = Session("SesssionInf")

If logClass.myConnection.State <> ConnectionState.Closed Then
logClass.myConnection.Close()
End If

End Sub

Session_Endイベントについていろいろ調べてみると
Session_Endイベント内では既にセッションは死んでいる
といったコメントを目にしますが、デバックをかけると
logClass.myConnection.Stateの状態はしっかりとOPEN状態
と取得できます。
ただし、まれに、条件文で Application_Errorに
飛んでしまいます。
やはり上記コードの記述は誤っているのでしょうか?
Session_Endイベント内でセッション情報を扱うこと
誤っているのでしょうか?
そうした場合、オラクルを切断するタイミングに困ってしまいます。
どなたか、助言いただきたくよろしくお願い致します。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-02-23 10:11
引用:

セッション毎に接続を確立させております。
現在、Session_Endイベントにて
上記、接続情報をlogClassといった独自のクラス内に
もっております。その接続情報の切断タイミングとして


使うときだけ繋ぎましょう。
Sessionに入れておく必要はありません。

_________________
たつごろー
codeseek
こみゅぷらす
Safe_WaY
会議室デビュー日: 2004/09/28
投稿数: 18
投稿日時: 2005-02-23 10:17
たつごろー様
ご返答ありがとうございます。
繋ぐのは使うときだけですが、
コネクションクラスがオラクルにアクセスする
際に必要なのでセッションでもっております。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-02-23 10:24
引用:

繋ぐのは使うときだけですが、
コネクションクラスがオラクルにアクセスする
際に必要なのでセッションでもっております。


セッションに持つ理由というより、こういう設計をしたということですよね。
では、これを変えたほうがよいと思われます。

_________________
たつごろー
codeseek
こみゅぷらす
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-02-23 10:45
似たような話を以下でもしているので参考に
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19260&forum=7&3
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
中博俊
ベテラン
会議室デビュー日: 2004/10/17
投稿数: 91
お住まい・勤務地: 大阪市
投稿日時: 2005-02-23 12:43
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=25647
Safe_WaY
会議室デビュー日: 2004/09/28
投稿数: 18
投稿日時: 2005-02-23 13:14
どなたか わかる方いらっしゃいましたた
ご教授よろしくお願い致します
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-02-23 13:19
引用:

コネクションクラスがオラクルにアクセスする
際に必要なのでセッションでもっております。


コネクションクラスをセッションで保持するのをやめましょう。
DBにアクセスする直前にコネクションをはってください。
DBへのアクセスが終わったらコネクションをきってください。
オブジェクトも捨てます。
毎回つなぎに行くのが効率が悪くなると思うかもしれませんが、これで問題ありません。
コネクションの扱いはチューニングもかかわってくるのでDBAに相談することも必要です。


_________________
たつごろー
codeseek
こみゅぷらす

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