gpt4 book ai didi

c# - 在我的 BaseController 构造函数中获取现有 session

转载 作者:太空狗 更新时间:2023-10-29 23:58:10 25 4
gpt4 key购买 nike

在我的 Global.asax 中,我在 Session_Start() 中有这段代码:

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

在我的 BaseController 中,我有这个属性:

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

它在所有使用这个基础 Controller 的矿山 Controller 中工作,但在我的 BaseController Constructor 中不起作用。

这个 session 是空的...

在我的 BaseController 中试试这个:

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

为什么?如何让用户直接在我的 BaseController 中登录?什么是更好的方法?

最佳答案

这很正常,所有与 HttpContext 相关的对象(例如 Session)尚未在 ASP.NET MVC Controller 的构造函数中初始化。这发生在稍后阶段,在 Initialize 中您可以使用的方法:

public BaseController: Controller
{
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
ViewBag.UserMenu = this.UserIntranet.Login;
}
}

关于c# - 在我的 BaseController 构造函数中获取现有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18234355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com