当 EnableSessionState 为 ReadOnly 时更改会话状态

2024-04-15

我有一个(旧的)ASP .NET WebForms 项目,并且我想尽可能将 EnableSessionState 设置为 ReadOnly,以防止会话锁阻止单个用户并发页面加载。

在某些页面上,我实际上确实想写入会话状态。

通常,只需将那些需要写入会话的页面的 EnableSessionState 设置回 True 即可。

问题是Page_Load事件只需要从会话状态中读取,而页面上唯一需要写入会话状态的代码是按钮Click事件。

但 EnableSessionState 适用于整个页面 - 因此,如果我将其设置回 True,整个页面都会受到影响,即使它实际上只需要在一个特定事件处理程序中写入会话。

最大的问题是,需要写入会话的代码位于站点范围母版页的事件处理程序中(它允许用户轻松地在链接帐户之间切换),所以我实际上无法将 EnableSessionState 设置为在任何页面上都是只读的!

那么问题来了:是否可以在 Web.config 中将 EnableSessionState 设置为 ReadOnly,然后为一个事件处理程序覆盖它?

如此有效,我想做这样的事情:

void Button_Click(object sender, EventArgs e)
{
    // Change Session back to read/write mode just for this one event handler
    // Not actually possible, because IsReadOnly is itself read-only
    Session.IsReadOnly = false;

    // Now I should be able to write to the session
    Session["foo"] = "bar";
}

(请注意,即使 EnableSessionState 为 ReadOnly,示例代码也可能运行,但会话实际上并未持久保存...如果重新加载页面,对会话的写入将不会在页面加载期间持久保存。)

我找不到任何方法来更改事件处理程序内的会话模式...

我想也许我可以创建一个新的上下文实例或会话实例或类似的会话读/写的实例,但我也找不到办法让它工作。


None

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

当 EnableSessionState 为 ReadOnly 时更改会话状态 的相关文章

  • ASP.NET 中的大数组支持

    最近有了 4 5 NET 支持 用户可以为一个对象分配超过 2 GB 的内存 为了做到这一点 用户可以在 app config 文件中将 gcAllowVeryLargeObjects 设置为 true 一切都会正常工作 但是我很难找到 A
  • 获取 ASP.NET 网站的 IIS 站点名称

    在我的 ASP NET Web 应用程序中 我想查找在 IIS 中创建它时指定的名称 该名称对于服务器来说是唯一的 我对网站的域名不感兴趣 而是对 IIS 中为该网站指定的实际名称感兴趣 我需要能够在 IIS6 和 7 上可靠地完成此操作
  • HttpContext.Current.Request.Form 复选框

    我将表单发布到 MVC 控制器 我想在其中处理用户在类似 html 结构的网格上所做的一些更改 我在视图中为每一行呈现了呈现为简单 HTML 的复选框
  • HttpContext 类及其线程安全

    我有一个辛格尔顿应用程序中的对象具有以下属性 private AllocationActionsCollection AllocationActions get return HttpContext Current Session Allo
  • 有没有办法忽略 ASP.NET Core 中 HTTP 日志记录中的 swagger 响应?

    我有一个使用 net 7 创建的 asp net Web api 我启用了http 日志记录 https learn microsoft com en us aspnet core fundamentals http logging vie
  • 从 URL 加载 Xml 时出现超时错误

    我正在执行将实时 xml 文件 从实时 url 加载到 XmlDataDocument 的任务 但每次我都会收到错误 操作已超时 代码如下 包含xml feeds的url 我想将其加载到xmlDoc中 XmlDataDocument xml
  • .NET 3.5 DirectoryServices.AccountManagement 中的不明确名称解析 (anr=*ma*) 等效项

    淘汰旧的 引进新的 呃 我正在搁置旧的 vb net asp net 2 0 asmx 服务 转而使用闪亮的新 c net asp net 4 0 WCF 服务 我的旧服务使用 System DirectoryServices Direct
  • 为什么告诉 jQuery 单击我的链接按钮会减慢我的页面速度?

    不知道是不是更新面板的影响 https stackoverflow com questions 31359065 performance deteriorating after async postback scrolling become
  • 如何在 .net 中为 Google 云存储签名 url

    我想知道如何使用 net中的谷歌云存储类生成signurl 我已经根据要求创建了字符串 GET 1388534400 bucket objectname 但我现在想用 p12 密钥签署这个 url 然后想让它变得 url 友好 该库没有显示
  • 发送到带有联系表格 asp.net 的电子邮件

    我如何使用 ASP NET 中的联系表单向指定的电子邮件地址发送电子邮件 该网站通过托管公司托管 谢谢 MailMessage mail new MailMessage SmtpClient SmtpServer new SmtpClien
  • 从另一个类访问和设置一个类中的变量

    我有一个 shopping cart aspx cs 文件 还有一个类文件 spcart cs 购物车 aspx cs public partial class Ui ShoppingCart System Web UI Page publ
  • ASP.NET 图表控件根据 X 轴标签上的 int 值设置月份名称

    我想用相应的月份名称替换图表 X 轴上的数字 1 2 3 这是我的实际图表 On the DataView填充的Series我有 MONTH 列 其中包含从 1 到 12 的值 我还必须手动设置Minimum and Maximum值设置为
  • 使用 UpdatePanel 的 ASP.NET AJAX

    从概念上讲 我对 AJAX 的理解是异步发送到服务器的请求 也称为并行 当我使用多个UpdatePanels在页面上并触发多个异步回发 例如通过使用按钮 我注意到第二个请求在第一个请求完成之前才开始 但是当我使用 JQuery ajax 并
  • C# Asp.net Membership.GetAllUsers 通过电子邮件订购

    我正在使用 Membership GetAllUsers 来获取我的用户列表 我希望返回的列表按电子邮件地址排序 因为我需要标记一些具有重复电子邮件的帐户 Membership GetAllUsers 似乎默认按用户名排序 有办法改变这种行
  • 找不到文件“obj\Debug\OldProjectName.csproj.FileListAbsolute.txt”

    我正在尝试发布项目 工具 vs2010 但无法始终收到以下错误 我从另一个项目粘贴到我的项目文件 然后将命名空间 OldProjectName 更改为父项目 NewProjectName 但它仍然从某个地方获取有关旧项目的信息 我清理了解决
  • NHibernate 会话线程安全

    我已经使用 NHibernate 一段时间了 并且不时发现如果我尝试同时请求两个页面 或尽可能接近 偶尔会出错 所以我认为这是因为我的会话管理不是线程安全的 我以为这是我的课 所以我尝试使用与这篇博客文章不同的方法http pwigle w
  • SQL Express 连接字符串地狱 ASP.Net

    SQL Express 2005 在本地运行 我有一个由另一个人编写的项目在同一台机器上运行 我想做的就是连接到它 不会那么难吧 这是我在旧的经典 ASP 代码中使用的代码来访问在同一实例上运行的另一个数据库 提供程序 SQLOLEDB 数
  • ASP.NET 的电子邮件地址验证

    使用什么来验证 ASP NET 表单上的电子邮件地址 我想确保它不包含 XSS 漏洞 这是 ASP NET 1 1 ASP NET Web 表单上发布的任何脚本标记都会导致您的网站抛出未处理的异常 您可以使用 asp 正则表达式验证器来确认
  • GridView,在代码中添加标题行第 2 部分

    这是这篇文章的延续 但添加了完整的代码 ASP NET GridView 在代码中添加标题行 https stackoverflow com questions 19119004 asp net gridview adding header
  • asp.net 保护图像免受其他用户的静态请求?

    我在一个为每个特定用户生成动态图像的网站上工作 有时这些图像包含非常敏感数据的描述 最近 我们开始看到对属于不同用户的图像的请求 其形式为 http myapp images someuid image1 jpg http myapp im

随机推荐

  • MySQL 如何使用 INTO OUTFILE 追加到文件?

    我有以下代码 SELECT INTO OUTFILE TestInput Results csv FIELDS TERMINATED BY LINES TERMINATED BY n FROM Results 期望的结果是不断附加到 Res
  • 将二叉树转换为排序数组

    有没有一种方法可以将二进制转换为排序数组 而不必遍历树来查找每个数组索引 Node root Node runner int current smallest void findsmallest Node root Pre order tr
  • 使用 Python 从 AWS Lambda 连接到 DocumentDB

    我正在尝试从 Lambda 函数连接到 DocumentDB 我已经按照此配置了我的 DocumentDBtutorial https aws amazon com getting started hands on getting star
  • 如何让Mermaid中指定的节点水平对齐?

    这是我的流程图 graph TB aaa gt bbb gt ddd ccc ddd gt fff ccc gt eee fff fff gt hhh ggg kkk hhh gt iii mmm ggg kkk gt mmm 但实际上我想
  • NHibernate - 左连接

    我有以下两个表 JobsAreaID JobNo 复合键 Logs日志ID 区域ID 作业编号 我需要获取所有没有与之关联的日志的作业 在 SQL 中我可以这样做 SELECT Jobs AreaID Jobs JobNo FROM Job
  • 使用 numpy 执行外加法

    抱歉 如果这是一个愚蠢的问题 但我刚刚开始使用 python numpy 我真的不确定最有效的方法 我正在为一些学生制作一个演示 N 体模拟器 但现在 我通过循环这些粒子的位置来计算粒子之间的力 可以预见 速度会像糖蜜一样慢 基本上 给定一
  • 在java中注入击键

    我正在寻找一种将击键注入操作系统键盘输入缓冲区的方法 就像当您单击一个按钮时 程序会插入一个 或多个 键盘敲击 我想在java中执行此操作 因为我想在 win linux和osx 中运行它 我想我必须利用 JNI 有人有什么想法吗 感谢所有
  • 向 Qt 对话框添加最小化按钮?

    我创建了一个QDialog基于使用 Qt Creator 的应用程序 除了对话框没有最小化按钮之外 一切都很好 我怎样才能添加一个 设计器中有我可以设置的属性吗 您无法自己添加最小化按钮 因为它是由窗口管理器处理的 您可以使用窗口管理器提示
  • Devise_token_auth 冲突?

    使用默认的 api 标签在 Rails 5 中创建了一个新的 API 并使用命令安装了 devise token auth gemrails generate devise token auth install User auth 关于做r
  • JavaScript 未知数量的参数

    在我的项目中 我注册了不同的函数 具有不同数量的参数 作为许多事件的侦听器 当事件发生时 我需要触发相关的函数 我接收以数组形式传递给侦听器方法的参数 而侦听器函数需要每个单独的参数 所以 我正在这样做 但我不喜欢这种方法 想知道是否有一种
  • 修改 Silverlight 3 中新 Popup 控件 (ChildWindow) 的外观/行为

    我想删除 Silverlight 3 中新 Popup 控件的灰色标题 如果这可能的话有什么想法吗 很简单 只需编辑默认的 ChildWindow 样式即可 在 Blend 3 中创建一个 ChildWindow 类型的新项目 右键单击项目
  • 在 Linux 中何时使用 pthread_exit() 以及何时使用 pthread_join()?

    我是 pthreads 的新手 我正在尝试理解它 我看到了一些例子 如下所示 我可以看到main 被 API 阻止pthread exit 而且我见过 main 函数被 API 阻塞的例子pthread join 我无法理解何时使用什么 我
  • Java 调试器:是否可以有选择地挂起线程?

    在我过去作为 C C 程序员的生活中 在某些平台和调试器组合上可以选择性地挂起线程 到达断点后 可以发出命令 或单击 GUI 中的内容 来冻结 解除冻结 挂起 唤醒 线程 在执行进一步的步骤 下一步 运行 继续命令时 挂起的线程将不会执行任
  • 使用 AWS codedeploy 部署 Nodejs 实例的 NPM 问题

    我目前正在尝试通过 Github 和 AWS Codedeploy 将 Nodejs 应用程序自动部署到 EC2 实例 我已按照以下指示进行操作here http docs aws amazon com codedeploy latest
  • Array.size() 与 Array.length

    两者有什么区别 所以我知道array size 是一个函数 而array length是一个属性 是否存在使用其中一种而不是另一种的用例 是不是效率更高 我会想象 length明显更快 因为它是一种属性而不是方法调用 为什么人们会使用较慢的
  • Wordpress Multisite - 无法访问子文件夹站点仪表板

    我是 WordPress 多站点新手 我发现了一个奇怪的问题 我已经安装了 WordPress 的新实例 并使用子文件夹启用了多站点 唯一的问题是当我创建新网站时 它无法正确显示 并且我无法访问新网站仪表板 我已将这些行添加到wp conf
  • 如何在 Power Query M 中发表评论?

    有没有办法注释 M 代码 注释掉代码行或代码块 M 支持两种不同类型的注释 单行注释可以以 开头 您可以使用 注释掉多行或注释掉行中间的文本 例如 1 some comment 2 如果注释位于行尾 则它们似乎会在公式栏中消失 但它们仍然存
  • postgresql 加密

    我有 oracle 数据库可以转移到新的 postgresql 服务器 某些表具有敏感字段 并且这些表均通过 DBMS OBFUSCATION TOOLKIT DESENCRYPT DESENCRYPT 进行加密 问题就在这里 postgr
  • PostgreSQL 和 C# 数据类型

    我搜索了 PostgreSQL 和 C 之间的类型转换表 但没有找到任何内容 如果有时间 我会研究上表上的空单元格 但如果您知道包含这些信息的网页 我非常适合您的帮助 Postgre Type gt C Type bigint gt Int
  • 当 EnableSessionState 为 ReadOnly 时更改会话状态

    我有一个 旧的 ASP NET WebForms 项目 并且我想尽可能将 EnableSessionState 设置为 ReadOnly 以防止会话锁阻止单个用户并发页面加载 在某些页面上 我实际上确实想写入会话状态 通常 只需将那些需要写