gpt4 book ai didi

asp.net-mvc - ASP.Net MVC Controller 构造函数中的 session 为 null

转载 作者:行者123 更新时间:2023-12-01 17:57:17 25 4
gpt4 key购买 nike

为什么 Controller 的构造函数中Session为null?可以从 Action 方法访问它。据推测,因为 MVC 路由框架负责更新 Controller ,所以它只是此时还没有(重新)实例化 session 。

有谁知道这是否是设计使然,如果是,为什么?

[我已经通过使用延迟加载模式设法规避了这个问题。]

最佳答案

Andrei 是对的 - 它为 null,因为在 ASP.NET MVC 框架下运行时,当 Controller 类按照您的预期构造时,不会设置 HttpContext(因此 HttpContext.Session),但它设置了(“注入(inject)") 稍后由 ControllerBuilder 类实现。如果您想更好地了解生命周期,您可以下拉 ASP.NET MVC 框架(源可用),或引用:this page

如果您需要访问 session ,那么一种方法是重写“OnActionExecuting”方法并在那里访问它,因为到那时它将可用。

但是,正如 Andrei 所建议的,如果您的代码依赖于 Session,那么编写单元测试可能会很困难,因此也许您可以考虑将 Session 包装在一个帮助器类中,然后可以将其换成不同的,在单元测试下运行时为非 Web 版本,因此将 Controller 与 Web 解耦。

关于asp.net-mvc - ASP.Net MVC Controller 构造函数中的 session 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/889516/

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