Frage

In my Global.asax, i have this code in the Session_Start() :

UserIntranet user = new UserIntranet();
user.Login = this.Request.LogonUserIdentity.Name.Split('\\')[1];
Session["user"] = user as UserIntranet;

In my BaseController, i have this property :

public UserIntranet UserIntranet
{
    get 
    {
       return Session["user"] as UserIntranet; 
    }
}

It's working in all of mines controllers who use this base controller but not in my BaseController Constructor himself.

This session is Null...

Have try this in my BaseController :

public BaseController()
{
    ViewBag.UserMenu = this.UserIntranet.Login;/* Null */
}

Why? How can i get the user login directly in my BaseController? What is the better way?

War es hilfreich?

Lösung

That's normal, all HttpContext related objects such as the Session are not yet initialized in the constructor of an ASP.NET MVC controller. This happens at a later stage, in the Initialize method that you could use:

public BaseController: Controller
{
    protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        ViewBag.UserMenu = this.UserIntranet.Login;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top