gpt4 book ai didi

c# - session 变量不会在不同 Controller 之间保持值

转载 作者:行者123 更新时间:2023-11-30 17:45:38 26 4
gpt4 key购买 nike

我正在使用两个 Controller ,它们都将一个值保存到 Session 但只有一个 Controller 设法保持它的值。

保存值的代码行是

Session["LoginDate"] = <dateTimeObject>;

这在两个 Controllers 中都是一样的。第二个 Controller 从第一个 Controller 调用,而在第二个 Controller 中,如果我设置了 Session 的值,那么在我返回调用 Controller 之前一切正常。如果我只调用第一个 Controller ,则可以设置该值并将其发送回客户端。

我已经尝试修改第二个配置文件以包含

<sessionState mode="InProc" timeout="30" />

并确保它们使用相同版本的 .NET、MVC 等......

关于如何调试它有什么想法吗?我还应该检查什么?

更新
有没有办法从不同的服务器传递 session 状态,或者使用 cookie 会更好,因为 cookie 将在客户端浏览器上?新发现是第二个 Controller 做了一个

Redirect("serverOfController_1");

最佳答案

Controller 由 MVC 核心初始化,因此它具有对当前请求上下文的正确引用。当您自己创建 Controller 实例时,它根本没有任何上下文,因此它不能使用 Controller 接口(interface)中的任何内容。

要使该 Controller 中的方法在该上下文中工作,它不能依赖于 Controller 接口(interface)中的任何内容。如果要从该方法设置 session 变量,则必须获取当前上下文并从中访问 Session 对象:

System.Web.HttpContext.Current.Session["LoginDate"] = <dateTimeObject>;

您还可以在创建实例后从当前 Controller 复制 Controller 上下文。这样,您创建的 Controller 将具有与当前 Controller 相同的上下文。示例:

SecondController second = new SecondController();
second.ControllerContext = ControllerContect;
second.SomeMethod();

关于c# - session 变量不会在不同 Controller 之间保持值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239765/

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