ユーザーのプロファイル情報をセッションまたはキャッシュに保存し、ページが読み込まれるたびにその情報を手元に置いて、ページを読み込むたびにデータベースを呼び出さないようにする方法を作成しようとしています。これらの値の一部を共有レイアウトに配置できるようにしたい (ユーザーの名前を右上隅などに配置できるようにするため)。マスター ページ レイアウトの上部には、次のものがあります。
@{
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 などだけです。このようなタスクを実行するためのより良い方法があると思います。