ASP.Net MVC 控制器构造函数中的会话为 null

2023-11-20

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

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

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


Andrei 是对的 - 它是 null,因为在 ASP.NET MVC 框架下运行时,当控制器类按照您的预期构建时,不会设置 HttpContext(因此 HttpContext.Session),但稍后会设置(“注入”)通过 ControllerBuilder 类。如果您想更好地了解生命周期,您可以下载 ASP.NET MVC 框架(源代码可用),或参考:这一页

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.Net MVC 控制器构造函数中的会话为 null 的相关文章

  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • 为级联子列表构建一个空的 MVC DropdownListFor

    我想构建一个空的下拉列表来接收先前下拉列表选择的结果 实际视图 div Html DropDownListFor m gt m Make Id Model MakeList HeelpResources DropdownlistMakeFi
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • 多行有多个提交按钮,我应该为每个按钮制作一个表单吗?

    我列出了大约 20 行 每行代表一个订单 每行需要有 3 个按钮 每个按钮单击将执行不同的操作 我有 3 个操作来处 理每个按钮发布请求 我只是不确定如何为每个按钮设置 Html 表单 tr td td tr
  • 在启用 LowercaseUrls 的情况下保留路由参数中的大小写

    我在用routes LowercaseUrls true 在我的 MVC 4 应用程序中 它运行得很好 但是 参数也会变成小写 所以如果我有一条像 routes MapRoute name MyController url foo hash
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • 如何将包含动态内容的捆绑包添加到 ASP.NET Web 优化

    我正在使用 SignalR 它映射到虚拟路径 signalr 上的 asp net 应用程序 SignalR 在应用程序上动态创建 JavaScript 代理集线器 以虚拟路径 signalr hubs 开始 所以网址 http myapp
  • Rails 中的会话、子域和 authlogic 问题

    我有一个带有 authlogic 身份验证的 Rails 应用程序和一个使用 subdomain fu 构建的 username domain com 结构 但是当从domain com转到username domain com时 我的会话
  • MVC 中的 Blazor:组件被渲染,但 @onclick 不起作用。连接问题

    我正在尝试在 net core 3 MVC 项目中使用 Blazor 我使用了一些教程来做到这一点 例如https fizzylogic nl 2019 08 18 integrating blazor in an existing asp
  • 如何检查 MVC cshtml 页面中的调试模式

    如何检查 MVC cshtml 页面中的调试模式 此代码在 cshtml 页面中不起作用 bool isRelease false if DEBUG isRelease false else isRelease true endif if
  • Firebase 3.0 会话持久性

    在 firebase 3 0 中使用会话持久性似乎是不可能的 这在以前的版本中是可能的 https www firebase com docs web guide login password html https www firebase
  • 具有多个 Angular 2 应用程序的 ASP.Net Core MVC [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试为一个我知道会变得越来越复杂的项目准备结构 我想使用 ASP Net Core MVC 进行顶层导航 我想在每个主视图中放置
  • ASP.NET MVC:FileStreamResult 返回太多字节?

    我正在调用 MVC 控制器方法 返回类型是FileStreamResult 在此方法中 我以字节数组的形式创建图像 我正在创建一个 MemoryStream 在构造函数中传递字节数组 然后 我在构造函数中返回一个新的 FileStreamR
  • .NET ServiceModel.Syndicate - 更改 RSS 源的编码

    我正在尝试解决我在以下位置生成的所有 RSS 源的错误http captainobvio us http captainobvio us在 Internet Explorer 版本 8 和 9 中产生以下错误 进给代码错误 从当前切换 编码
  • ASP.NET MVC - 更新生产中的预编译 Razor View 文件

    我想知道以下是否可能 通过在 Visual Studio 中打开项目设置 使用我们的 MVC 应用程序预编译 Razor 视图 将应用程序部署到生产环境 然后在稍后阶段 通过覆盖生产中现有的 cshtml 文件来更新视图 而无需回收应用程序
  • ASP.NET 视图中的区域?

    我正在使用 razor 引擎制作 ASP NET MVC 应用程序 我想知道是否可以使用Regions http msdn microsoft com en us library 9a1ybwek aspx在一个视图中 就像是 region
  • MVC3数据缓存技术

    我有一个 sql 查询 存储过程 在结果显示在网络网格中之前需要大约 8 10 秒才能返回 关于 asp net mvc3 中的缓存的性能最佳实践是什么 以便用户不必每次都花费 8 10 秒来加载该数据 减少优化查询 你可以使用内存缓存 h
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • 如何在单击按钮时重新绑定 igGrid igniteUI 控件中的数据?

    我在 ASP NET MVC3 应用程序中使用 Infragistics Ignite UI 控件 我有一个已绑定到 客户 数据的网格 工作正常 现在我有按钮了 单击后我会进行 ajax 调用 在控制器中 我编写了仅选择 客户 数据的一部分

随机推荐

  • 如何让 JScrollPane 每鼠标滚轮一步滚动 1 行?

    我有一个 JScrollPane 其内容窗格是 JXList 当我在列表上使用鼠标滚轮时 列表一次会移动三 3 个项目 这也适用于表格 无论行高如何 我如何更改此设置 以便无论平台如何 对于列表和表格 滚动距离恰好为 1 项 设置块增量不会
  • 使用 NUnit Console Runner 运行文件夹下的所有测试

    我正在尝试使用 NUnit Runners 2 6 4 运行测试文件夹中的所有测试程序集 我当前的命令如下所示 nologo noshadow framework net 4 0 xml test TestResults xml test
  • 具有两条二次曲线的画布剪辑图像

    我只是想将图像剪辑成曲线 但没有发生这种情况 仅显示图像 但不显示剪辑 var canvas document getElementById leaf var context canvas getContext 2d save allows
  • 如何覆盖活动记录对象中的属性分配?

    我知道您可以使用虚拟属性来做到这一点 但是如果该列确实存在怎么办 例如 我的模型有一个raw topic柱子 什么时候raw topic已定 我想要artist and song title设定基于raw topic的内容 理想情况下 我想
  • C# 释放 IntPtr 引用的内存

    我正在使用一些非托管代码 它们返回指向大图像对象的指针 IntPtr 我使用引用 但在完成图像后 我需要释放指针引用的内存 目前 释放内存的唯一方法是关闭我的整个应用程序 我需要能够从应用程序内部释放该内存 这是分配内存的调用 hbitma
  • 从 DLL 导出 MFC 对话框

    7月21日 更新 见底部 在 VC 2005 中我有 2 个项目 首先 一个 MFC DLL 项目 不是扩展 DLL 它有一个简单的对话框 测试Dlg h pragma once include afxwin h include resou
  • 如何使用 xslt 管理微数据?

    我正在尝试添加一个标签 例如 div 在我的 xslt 转换中 但出现错误 预期的标记是 我正在 C net 4 0 xslt 1 0 中工作 XSLT 针对生成 XML 输出进行了优化 一般来说 HTML5 不是 XML 语法 div 显
  • 如何使用来自 python 的请求使用 opencv 从 url 打开图像

    我正在尝试在 python 上使用 OpenCV 打开大量图像 因为我需要稍后使用它们 其实 我可以用这样的枕头来实现这个目标 url r https i imgur com DrjBucJ png response requests ge
  • 使用 MySQL C API 和 C++ 获取 MySQL 数据库表中的行

    当尝试使用 C 和 MySQL C API 获取 mysql 中的表行时 我感到很困惑 我可以在 PHP 中轻松完成 只是因为 C 是一种强类型语言 所以我们还需要处理脏过程 这就是我在 PHP 中完成的方法 data array i 0
  • 无法升级或从系统中删除 firebase

    正如标题所示 我无法升级或以任何方式从我的系统中删除当前版本的 firebase 我不明白为什么 我使用首次启动项目时提示的 firebase 命令安装了它 符合npm install g firebase tools 在我安装了其他软件包
  • 如何在 Qt for android 中保持屏幕常亮?

    我找到了一些如何在 Java 中做到这一点的解决方案 但没有找到如何在 QML 或 Qt 中做到这一点 我知道首先我应该设置WAKE LOCK的许可AndroidManifest xml 我应该怎么做才能在运行时从 Qt 打开和关闭屏幕锁定
  • Docker 节点 alpine 8 分段错误(核心转储)

    我被这个错误困扰了一整天 当我尝试运行我的 docker 容器时 出现错误Segmentation fault core dumped 因此 为了重现此错误 我将提供我的环境和代码 下面第一个是 Dockerfile 没什么特别的 FROM
  • 没有JS的固定标题列和行的Html表格

    我目前正在尝试正确显示一种议程 该议程代表头行上的时间和头列上的不同房间 我想要有固定的标题 第一行和第一列 和一个可滚动的表格 显示房间在给定时间是否可用 经过一些研究后 我发现这个问题已经使用 jQuery 或自制 JS 脚本得到了回答
  • 角度4:从不同的组件调用方法

    我有 2 个同级组件 我正在一个组件中执行 http 请求 如果发生特定情况 它应该发出另一个在另一个组件中编写的 http 请求 所以我应该能够调用第一个组件中的方法 这是第一个组件 import Component OnInit Inj
  • 在elasticsearch中使用现有字段作为id

    今天刚开始使用elasticSearch 我想知道是否可以设置某种全局参数以始终使用文档中的某个字段作为 ID 我的 JSON 文档将始终拥有自己的唯一 ID Record ID a06b0000004SWbdAAG System Mods
  • Java 和本地数据库

    TL 博士 需要一些 Java 帮助来连接到真正的本地数据库 无法访问服务器技术 或者如果您可以编写代码 那就可以了 它所要做的就是查询数据库 MS Access 尽管可以更改 并输出一个 JSON 字符串 有关更多具体信息 请参阅 EDI
  • React Native android APK 扩展支持吗?

    我尝试搜索 React Native Android APK Expansion 但找不到任何有关它的页面 RN 支持 APK 扩展文件吗 如何在本地开发中测试它 谢谢 None
  • 在spring data elasticsearch中,聚合查询不能放在存储库实现中吗?

    我第一次使用 spring boot elasticsearch 我现在已经弄清楚如何使用 elastics java api 描述我的串行差异管道查询 正如您将在下面看到的 这个查询相当大 并且为每个对象返回多个存储桶以及每个存储桶之间的
  • 丢失密钥对后访问 EC2 实例

    几个月前 我启动了一个 EC2 实例 当时我将 pem 密钥存储在我的 PC 中 电脑崩溃后 我不得不在上面重新安装 Windows 而且我没有 pem 文件的备份 有什么方法可以让我到达 EC2 实例上的提示符 任何通过 ssh 或其他方
  • ASP.Net MVC 控制器构造函数中的会话为 null

    为什么控制器的构造函数中Session为null 可以从 Action 方法访问它 据推测 因为 MVC 路由框架负责更新控制器 所以它此时还没有 重新 实例化会话 有谁知道这是否是设计使然 如果是 为什么 我已经通过使用延迟加载模式设法规