ASP.NET - Как я могу кэшировать пользовательские детали на время их визита?

Я создал Репозиторий, который получает пользовательские детали

Public Function GetUserByOpenID(ByVal openid As String) As User Implements IUserRepository.GetUserByOpenID
    Dim user = (From u In dc.Users
               Where u.OpenID = openid
               Select u).FirstOrDefault
    Return user
End Function

И я хотел бы смочь раскрыть те детали, ЕСЛИ пользователь зарегистрирован И ЕСЛИ кэшированные данные являются пустыми.

Что лучший способ состоит в том, чтобы создать Пользовательский объект, который содержит все пользовательские детали, и сохраните его через весь сайт на время их визита?

Я пробовал это в своем Global.asax, но я не действительно счастливые Переменные сеанса использования. У меня был бы отдельный объект со всеми подробностями внутри.

Private Sub BaseGlobal_AcquireRequestState(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.AcquireRequestState
    If Session("UserName") Is Nothing AndAlso User.Identity.IsAuthenticated Then
        Dim repo As UrbanNow.Core.IUserRepository = New UrbanNow.Core.UserRepository
        Dim _user As New UrbanNow.Core.User
        _user = repo.GetUserByOpenID(User.Identity.Name)

        Session("UserName") = _user.UserName()
        Session("UserID") = _user.ID
    End If
End Sub
1
задан Chase Florell 15 June 2010 в 05:34
поделиться

1 ответ

Хранить в переменной сеанса полный объект пользователя, а не только члены.

//store
Session("UserInfo") = _user

//read
Dim user = DirectCast(Session("UserInfo"), UrbanNow.Core.User)

(Код конвертируется в vb.net онлайн-конвертером, я не знаю ни одного vb.net, извиняюсь за синтаксические ошибки)

2
ответ дан 2 September 2019 в 23:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: