0

バックグラウンド:

Windows認証を使用するMVC3イントラネットアプリケーション。Windows認証が完了すると、HttpModuleはHRデータベースからユーザーのネットワークIDを検索し、ユーザーの従業員情報を返し、それをに設定しHttpContext.Itemsます。この情報を検索し、OnActionExecutingをオーバーライドしてViewBagプロパティを設定するベースコントローラーがあります。

私の質問は、HomeControllerはBaseControllerを継承していますが、このHttpContext.Items["UserInfo"]情報はHome / Indexでのみ利用可能であり、Home/AboutまたはHome/Helpをクリックすると利用できないようです。なぜこれが起こっているのかを誰かが明らかにすることができますか?

protected override void OnActionExecuting(ActionExecutingContext ctx)
        {          
            if (this.HttpContext.Items["UserInfo"] != null)
            {
                UserInfo User = (UserInfo)this.HttpContext.Items["UserInfo"];
                ViewBag.CurrentUser = User;
            }            

            base.OnActionExecuting(ctx);
        }
4

1 に答える 1

1

HttpContext.Itemsリクエストごとのみです。別のビューにリダイレクトしたり、現在のビュー内でポストバックしたりすると、保持されません。したがって、Sessionそれを永続化するには、または何か他のものを使用する必要があります。

于 2012-05-18T14:45:01.197 に答える