私のASP.NETイントラネットWebアプリケーションはWindows認証を使用していますが、次の詳細を記録したいと思います。
1)Windows ID
2)セッション開始時間
3)セッション停止時間
4)参照されているURL(オプション)
Global.ASAXの「Session_Start」メソッドにいくつかの基本的なコード設定があり、セッションの開始時刻をログに記録します(以下を参照)が、これまでのところこれで終わりです。これは原始的なアプローチであり、これを行うための「より良い」方法があると私は感じています。だから私は本当に2つの質問があります:
1)これはこれを行うための正しい方法ですか?そうでない場合、他のいくつかのオプションは何ですか?
2)これが正しい方法である場合、「Session_End」メソッドにコードをドロップして、終了時間を記録する必要がありますか?それは完全な解決策ですか?このメソッドは、サイトを開いているブラウザータブを閉じるときに常に呼び出されますか、それともブラウザー全体を閉じる必要がありますか(ログアウト機能はありません)?ユーザーがこのセッション終了メソッドをスキップする(またはその場合は開始する)方法はありますか?
Dim connsql As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("MyConnectionstring").ConnectionString)
Dim cmdsql As System.Data.SqlClient.SqlCommand = connsql.CreateCommand
cmdsql.CommandText = "BeginUserSession"
cmdsql.CommandType = Data.CommandType.StoredProcedure
Try
cmdsql.Parameters.Add("@windowsid", System.Data.SqlDbType.VarChar, 30, "windowsid")
cmdsql.Parameters("@windowsid").Value = Session("UserInfo").identity.name
If connsql.State <> System.Data.ConnectionState.Open Then connsql.Open()
cmdsql.ExecuteNonQuery()
connsql.Close()
Catch ex As Exception
Finally
If connsql.State <> Data.ConnectionState.Closed Then connsql.Close()
End Try
'Stored Proc records start time