HttpContext.Current.Session 为空

2024-02-16

我有一个网站,在类库内有一个自定义缓存对象。所有项目都运行 .NET 3.5。 我想将此类转换为使用会话状态而不是缓存,以便在应用程序回收时保留状态服务器中的状态。 但是,当我访问 Global.asax 文件中的方法时,此代码会引发异常“HttpContext.Current.Session is null”。我这样称呼这个班级:

Customer customer = CustomerCache.Instance.GetCustomer(authTicket.UserData);

为什么对象总是为空?

public class CustomerCache: System.Web.SessionState.IRequiresSessionState
{
    private static CustomerCache m_instance;

    private static Cache m_cache = HttpContext.Current.Cache;

    private CustomerCache()
    {
    }

    public static CustomerCache Instance
    {
        get
        {
            if ( m_instance == null )
                m_instance = new CustomerCache();

            return m_instance;
        }
    }

    public void AddCustomer( string key, Customer customer )
    {
        HttpContext.Current.Session[key] = customer;

        m_cache.Insert( key, customer, null, Cache.NoAbsoluteExpiration, new TimeSpan( 0, 20, 0 ), CacheItemPriority.NotRemovable, null );
    }

    public Customer GetCustomer( string key )
    {
        object test = HttpContext.Current.Session[ key ];

        return m_cache[ key ] as Customer;
    }
}

正如您所看到的,我尝试将 IRequiresSessionState 添加到类中,但这没有什么区别。

干杯 延斯


它并不是真正将 State 包含在类中,而是在 Global.asax 中调用它的位置。会话并非在所有方法中都可用。

一个有效的例子是:

using System.Web.SessionState;

// ...

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
        {
            HttpContext context = HttpContext.Current;
            // Your Methods
        }
    }

它不会工作,例如在应用程序_启动中

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

HttpContext.Current.Session 为空 的相关文章

  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 有没有办法使用 ASP.NET 在用户离开页面时始终运行某些服务器端代码?

    我想知道当用户离开 ASP NET 中的页面时是否有任何方法可以始终运行一些服务器端代码 页面卸载事件不好 因为如果有人单击链接 则不会调用该事件 理想情况下 即使用户关闭浏览器 我也希望代码能够运行 我怀疑我所问的问题是不可能的 但问一下
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • jQuery .val 更改不会更改输入值

    我有一个 HTML 输入 其值中有一个链接
  • 从模型数据生成 XML 文件

    我需要编写模型数据 CharField仅 s 到 XML 文件以包含 flash 文件的数据 我对此很陌生 并且我对在 django 中执行此操作的过程有点不清楚 我正在创建一个 xml 文件 然后将文本数据写入该文件 与 csv 模块所做
  • 如何运行命令强制 docker-machine 在 Windows 10 Home 中创建具有特定地址的虚拟机?

    我一直在关注这个问题来强制 docker machine 创建具有特定地址的虚拟机有没有办法强制 docker machine 创建具有特定 IP 的虚拟机 https stackoverflow com questions 3433621
  • jQuery UI Datepicker onchange 事件问题

    我有一个 JS 代码 当您更改字段时 它会调用搜索例程 问题是我找不到任何在 Datepicker 更新输入字段时触发的 jQuery 事件 由于某种原因 当 Datepicker 更新字段时不会调用更改事件 当日历弹出时 它会改变焦点 所
  • .git 文件夹不包含什么?

    来自git site http git scm com book en v2 Git Internals Plumbing and Porcelain 强调我的 当您在新目录或现有目录中运行 git init 时 Git 会创建 git 目
  • iOS应用程序发布-以不同作者姓名发布

    我一直在家庭成员 Apple 开发者帐户下开发和测试 iPhone 应用程序 他支付了该帐户的费用 并将其注册在他的公司名下 当需要发布时 它会出现在应用商店 以及发布作者姓名的其他地方 中 以他的名字还是他的公司名称 这可以改变吗 是否可
  • wordCounts.dstream().saveAsTextFiles("本地文件系统路径", "txt");不写入文件

    我正在尝试将 JavaPairRDD 写入本地系统中的文件中 代码如下 JavaPairDStream
  • 从 Joomla 3 中的 CSV/Excel 文件导入用户

    我需要在 Joomla 3 2 系统中创建大约 100 个用户 有没有一种方法可以自动完成此操作且成本不高 我认为最好的组件是这样的 CSV 改进 http www csvimproved com http www csvimproved
  • 当两个图像碰撞时如何生成片尾画面?

    当两个图像碰撞时如何生成片尾画面 我正在制作一个带有火柴人的应用程序 你可以使用非常灵敏的加速度计来移动 因此 如果它达到这些峰值 UIImages 它将生成最终屏幕 如何让应用程序检测到这种碰撞 然后生成结束屏幕 我确信您知道这两个图像的
  • CSS3 转换与 Javascript 后备

    是否有一个 javascript 框架可以使用 CSS3 转换来实现更改不透明度或移动元素等效果 但如果不支持 则会回退到使用 javascript setInterval setTimeout 查看 YUI 3 Transition 模块
  • iOS 自定义表格视图单元格在编辑模式下调整大小

    编辑时UITableView红色圆形按钮和删除按钮与自定义单元格重叠 我们如何调整自定义单元格的大小 为红色圆形按钮和删除按钮留出空间 使用此代码 您可以根据编辑单元格的方式和所处阶段来执行不同的任务 我对代码进行了大量注释 因为我花了很长
  • 在 Twitter Bootstrap 中,如何解除模式对话框关闭事件的绑定?

    我有一个函数绑定到隐藏模式对话框的操作 我使用的代码类似于已接受的答案this https stackoverflow com questions 8363802 bind a function to twitter bootstrap m
  • 如何在 Excel 中绕过 64k 行限制

    我希望允许用户操作可能有多达 400 000 行的表 每行约 200 个字符 最大数据总量为 80MB 作为第一个近似值 我正在考虑以某种方式为用户提供一个 csv 文件以粘贴到电子表格中 首先 尝试这样的事情是否有实际意义 例如 一个电子
  • Flutter:在底部导航栏上显示模态底部表单/替换底部导航栏(无障碍)

    我正在尝试为我自己的 Flutter 应用程序复制一些类似于 Google 地图的功能 同样基于地图 我希望用户能够选择兴趣点并可以选择导航到该位置 当他们点击 导航 时 我希望底部工作表出现在现有底部导航栏的位置 或顶部 用于基于选项卡的
  • 放大画布而不修改特定子控件的大小

    所以我意识到我正在冒险超出 Canvas 的预期用途 并且可能不得不想出一个更加手动的解决方案 然而 由于在 WPF 方面没有太多经验 我希望可能有一些解决方案可以让我继续使用 Canvas 控件及其免费提供的功能 该问题围绕用于放大和缩小
  • C# 项目的目标是“.Net Framework,版本=v4.5”,该计算机未安装[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 今天下午我正在使用 Windows 8 上安装的 VS 2012 开发一个 C 项目 它运行良好 我在回家之前将代码上传到 TFS 但是当我
  • Python多处理,无法pickle thread.lock(pymongo)

    我有一个具有以下方法的类 def get add new links self max num links self get links m2 max num links processes mp cpu count pool mp Poo
  • iOS 应用程序如何安装在设备上

    我有兴趣了解 iOS 应用程序如何安装在设备上的技术细节 我来解释一下我的情况 我的应用程序的 ipa 和 plist 在服务器上 我制作了一个使用 itms services 指向 plist 文件的下载网页 我尝试在我朋友的 iPhon
  • 石英 2D 中的“斜角”形状

    我熟悉 Quartz 2D 绘图的一些基础知识 例如绘制基本形状和渐变等 但我不确定如何绘制具有 斜角 外观的形状 如下所示 斜角圆 http www shaggyfrog com junk beveled circle jpg http
  • HttpContext.Current.Session 为空

    我有一个网站 在类库内有一个自定义缓存对象 所有项目都运行 NET 3 5 我想将此类转换为使用会话状态而不是缓存 以便在应用程序回收时保留状态服务器中的状态 但是 当我访问 Global asax 文件中的方法时 此代码会引发异常 Htt