我正在尝试创建一种将用户的配置文件信息存储在会话或缓存中的方法,并且每次加载页面时都能够在手边拥有该信息,以防止每次加载页面时调用数据库。我希望能够将其中一些值放在共享布局中(这样我就可以将用户名放在右上角等)。在我的母版页布局的顶部,我有以下内容:
@{
Domain.Entities.UserProfile user = (Domain.Entities.UserProfile)HttpContext.Current.Session[Membership.GetUser().ProviderUserKey.ToString()];
}
我使用user.FirstName
母版页中的值。当用户登录时,我设置了会话。有没有更好的方法来做到这一点?如果我已注销并且我只是导航到仅限成员的页面,[Authorize]
则会绕过过滤器并收到错误消息Object reference not set to an instance of an object.
,因为我的用户配置文件尚未存储在会话中。我不会在会话中存储任何敏感信息,如 UserId 或任何东西,只是用户名、个人资料图片 url 等。我觉得可能有更好的方法来完成这样的任务。