我的 ASP.NET 内网 Web 应用程序使用 Windows 身份验证,我想记录以下详细信息:
1) Windows ID
2) 会话开始时间
3) 会话停止时间
4) 浏览到的 URL(可选)
我在 Global.ASAX 的“Session_Start”方法中有一些基本的代码设置来记录会话开始时间(见下文),但到目前为止就是这样。我觉得这是一种原始方法,并且有“更好”的方法可以做到这一点。所以我真的有两个问题:
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