Мое веб-приложение интрасети ASP.NET использует проверку подлинности Windows, и я хотел бы записать следующие сведения:
1) Windows ID
2) Время начала сеанса
3) Время окончания сеанса
4) Просматриваемый URL (необязательно)
У меня есть базовая настройка кода в методе «Session_Start» файла Global.ASAX для регистрации времени начала сеанса (см. Ниже), но это пока что. У меня такое чувство, что это примитивный подход, и есть «лучшие» способы сделать это. Так что у меня действительно два вопроса:
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