ASP.NET 中的 ThreadStaticAttribute

2024-06-11

我有一个需要存储的组件static每个线程的值。它是一个通用组件,可以在许多场景中使用,而不仅仅是在 ASP.NET 中。

我想用[ThreadStatic]属性来实现我的目标。假设它在 ASP.NET 场景中也能正常工作,因为我假设每个请求都在自己的线程中调用。

经过一番研究我发现这篇博文 http://www.hanselman.com/blog/ATaleOfTwoTechniquesTheThreadStaticAttributeAndSystemWebHttpContextCurrentItems.aspx斯科特·汉塞尔曼 (Scott Hanselman) 说使用时要小心[ThreadStatic]在 ASP.NET 中。

然而,大多数评论(在帖子下方)并不同意 Scott 所写的观点,他们说请求总是在一个线程中运行,并且该线程不会同时被另一个请求使用。我也是这么认为的,但很想听听这里的专家们的意见。


不,斯科特是对的:绝对是一个请求doesn't必须在整个持续时间内在单个线程上运行。 ASP.NET 是线程敏捷在这方面。只有少数几个点可以发生切换,但绝对可以can发生。 (我自己测试过。)

您可能想阅读这篇博文 http://piers7.blogspot.com/2005/11/threadstatic-callcontext-and_02.html and 了解更多详细信息。

基本上你应该找到一种不同的方式来捕获上下文。从您的角度来看,相关内容可能位于博客文章的末尾:

这是一个主要的 PITA,因为据我所知,它意味着 ASP.Net 中“ThreadStatic”行为的唯一持久性选项是使用 HttpContext。因此,对于您的业务对象,要么您陷入 if(HttpContext.Current!=null) 和 System.Web 引用(恶心),要么您必须为静态持久性提出某种提供程序模型,在访问任何这些单例之前需要进行设置。双讨厌。

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

ASP.NET 中的 ThreadStaticAttribute 的相关文章

  • SharePoint Web 部件与 ASP.NET Web 部件

    有人可以告诉我 SharePoint Web 部件和 ASP NET Web 部件之间的区别吗 我发现描述差异的信息很少 提前致谢 MSDN 在 ASP NET 2 0 Web 部件和 Windows SharePoint Services
  • 预期主表达式在“...”之前,C++ 编译错误

    SO 上有很多类似标题的帖子 但它们似乎是由各种语法错误触发的 而且我还没有看到一致的模式 using namespace std class A public A int a a a int a int main A x 3 A y 0
  • XAML 页面中的 Bindable 值存在问题

    我有一个保龄球回顾示例代码 其中输入了 3 场比赛并总结在系列列中 我遇到的问题是系列列没有按照我的预期进行更新 显然 我做错了什么 但看不到我做错了什么 以下是支持该应用程序的代码
  • 尝试访问 USB 设备时出现 RPC_E_CANTCALLOUT_ININPUTSYNCCALL

    我有这段代码 var searcher new ManagementObjectSearcher root CIMV2 SELECT FROM Win32 DiskDrive foreach var queryObj in searcher
  • node.js 本机插件 - 包装类的析构函数不运行

    我正在用 C 编写一个 Node js 插件 我使用 node ObjectWrap 包装一些类实例 以将本机实例与 JavaScript 对象关联起来 我的问题是 包装实例的析构函数永远不会运行 这是一个例子 point cc inclu
  • 我如何解决 log4net 不断更改 publickeytoken 的问题

    我们有一个 asp net 4 0 项目 它使用几个依赖于 log4net 版本 1 2 10 0 的框架 今天我尝试包含一个依赖于 log4net 版本 1 2 11 0 的新框架 从那时起我就陷入困境 log4net 1 2 10 0
  • .NET 4 代码契约:“需要未经验证:源!= null”

    我刚刚开始在我的项目中使用代码契约 但是 我的存储库实现存在问题 它使用实体框架查询数据库 我有以下方法 public IEnumerable
  • 基本镜面着色

    我正在使用一个生成阴影球体的简单代码 我还没有完全理解数学 但我在玩代码时正在弄清楚它 我想知道如何根据这段代码实现镜面反射着色 有什么建议么 for y 0 y
  • 在 Xamarin.Forms 中添加方向更改布局

    我需要实现的是 在将屏幕从纵向更改为横向时向现有页面添加布局 我已经成功地使用检测方向变化void OnSizeAllocation 双倍宽度 双倍高度 但我无法为此事件添加布局 我的示例 C 代码是 public class MyLayo
  • 通过“this->member”访问c++成员类比隐式调用“member”更快/更慢

    经过我们的朋友谷歌搜索后 我无法得到以下观点的明确看法 我习惯这样称呼班级成员this gt 即使不需要 我发现它更明确 因为它在维护一些带有大量变量的繁重算法时很有帮助 当我正在研究一种应该优化的算法时 我想知道是否使用this gt 是
  • 无堆栈协程与堆栈协程有何不同?

    背景 我问这个问题是因为我目前有一个具有许多 数百到数千 线程的应用程序 这些线程中的大多数在很大一部分时间内处于空闲状态 等待将工作项放入队列中 当工作项可用时 它会通过调用一些任意复杂的现有代码来处理 在某些操作系统配置上 应用程序会遇
  • 如何使用 Linq 对通用集合进行分页?

    我有一个 System Generic Collections List Of MyCustomClass 类型对象 给定整数变量 pagesize 和 pagenumber 如何仅查询 MyCustomClass 对象的任何单个页面 如果
  • 如何将 char 指针转换为 int 指针

    我想投射一个指针pc它将 char 指向一个点pi它指向 int char pc int pi pi int pc compiler complaint about old style cast pi static cast
  • 如何解决有关 TcpListener: 请使用 TcpListener(IPAddress localaddr, int port) 的警告?

    我创建了一个新表单 在顶部我做了 using System using System Collections Generic using System ComponentModel using System Data using Syste
  • LINQ to SQL 未映射的属性

    是否可以在设计器中添加自定义属性并且不将其绑定到列 我摆弄了一些设置 决定用该属性创建一个部分类 有没有办法在 ORM 设计器中显示这个字段 LINQ to SQL 设计器正在维护映射 未映射的属性需要放入单独的分部类中
  • 创建新选项卡并管理它们 - Selenium

    这是我的代码 var chromeOptions new ChromeOptions chromeOptions AddArguments headless driver new OpenQA Selenium Chrome ChromeD
  • 使用Swashbuckle ISchemaFilter设置输入参数的默认描述

    我想在文档架构中为所有具有 DateTime 类型的输入参数添加默认描述 这样客户就会了解我们正在使用哪些格式等 我可以为此目的创建 ISchemaFilter 的自定义实现吗 我知道我可以使用 xml 注释添加描述 但在这种情况下 我应该
  • 将字符串中的每个字符转换为 ASCII

    谁能告诉我如何轻松地将字符串中的每个字符转换为 ASCII 值 以便我可以对这些值求和 我需要对哈希函数的值求和 字符串中的每个字符都已经是 ascii include
  • Qt:如何处理用户按下“X”(关闭)按钮的事件?

    在 Qt 中 与用户单击窗口框架的 X 关闭 按钮 即此按钮 事件相对应的插槽是什么 如果没有这个插槽 在用户按下关闭按钮后是否有其他方法来触发功能 如果你有一个QMainWindow你可以覆盖closeEvent method inclu
  • GO 语句破坏了 .NET 中的 SQL 执行

    我有一个非常简单的 C 命令 shell 应用程序 它执行 SQL Server 生成的 SQL 脚本来编写模式和数据脚本 它在 GO 声明中爆炸了 错误信息 GO 附近的语法不正确 这是完整的 sql 脚本 Object Table gy

随机推荐

  • 如何检查应用程序的 .NET 版本?

    除了在仅具有 NET Framework 版本 3 5 的计算机上运行之外 如何检查 NET 应用程序的版本 NET 框架版本控制在 NET 2 0 之后变为 foobar 一个应用程序的目标是CLR版本 它使用 EXE 的程序集元数据来实
  • Toast.LENGTH_LONG 和 Toast.LENGTH_SHORT 的值是多少?

    我正在我的应用程序中打印 Toast 消息以显示通知 但我想知道 Toast LENGTH LONG 和 Toast LENGTH SHORT 我还可以使用哪些其他值 谁能告诉我这两个变量的值是多少 还有另一个问题可以回答您正在寻找的内容
  • 核心数据推导表达式关键路径使用运算符作为中间组件

    我正在尝试编写一对多关系属性之和的派生表达式 我有一个商品和一个组 该商品有价格和总价 金额 价格 我想编写一个表达式 将该组的总价格作为其组成部分的总和 当我构建时出现错误 错误 属性配置错误 LAEItemGroup totalPric
  • MailChimp 取消订阅 URL 中每个参数的用途是什么?

    在以下 URL 中 从列表中取消订阅用户 http xxxxx us2 list manage com unsubscribe u 87f537bccxx35e53a1890e0d9 id 40dcxx6cd6 e c4aaxx1dd6 c
  • Numpy:查找两个 3-D 数组之间的欧几里德距离

    给定两个维度为 2 2 2 的 3 D 数组 A 0 0 92 92 0 92 0 92 B 0 0 92 0 0 92 92 92 如何有效地找到 A 和 B 中每个向量的欧几里得距离 我尝试过 for 循环 但速度很慢 而且我正在按 g
  • 从一个 NSManagedObjectContext 保存的更改不会反映在主 NSManagedObjectContext 上

    我有一个主NSManagedObjectContext是在appDelegate 现在 我正在使用另一个NSManagedObjectContext用于编辑 添加新对象而不影响主对象NSManagedObjectContext 直到我拯救它
  • 就地改变 numpy 函数输出数组

    我正在尝试编写一个对数组执行数学运算并返回结果的函数 一个简化的例子可以是 def original func A return A 1 A 1 为了加速并避免为每个函数调用分配新的输出数组 我希望将输出数组作为参数 并就地更改它 def
  • 将 Swift 闭包作为值添加到 Swift 字典中

    我想创建一个 Swift 字典 将 String 类型作为其键 将 Closures 作为其值 以下是我的代码 但它给了我错误 lvalue 与 String gt Void 不同 class CommandResolver private
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • 如何解决 Xcode 7 中的 No Type or Protocol Named 错误?

    我试图passing从第二个开始的值class我正在使用的头等舱protocol and delegate过程 每当我运行我的程序时 我都会遇到以下问题 No Type or Protocol Named locateMeDelegate
  • 理解“窗口”对象[重复]

    这个问题在这里已经有答案了 可能的重复 JS 窗口全局对象 https stackoverflow com questions 10035771 js window global object 如何window对象工作 我知道它是顶级对象并
  • Liftweb 环境中的后台任务

    我必须编写守护进程 并且我想使用模型来连接到数据库和一些有用的 Lift 类 是否可以运行 Rails 的 rake 任务的模拟 Scala 社区组上也有类似的问题 答案是使用Actors来做后台处理
  • 转储 Windows DLL 版本的命令行工具?

    我需要一个命令行工具来转储标准 Windows DLL 版本信息 以便我可以通过 bash 脚本 Cygwin 对其进行处理 作为一名 Java 开发人员 我不太习惯 Microsoft 开发工具 尽管我对 Microsoft Visual
  • 使用 pytz 获取时区的国家/地区代码?

    我在用着pytz http pytz sourceforge net country information 我已经阅读了整个文档表 但没有看到如何做到这一点 我有一个时区 美国 芝加哥 我想要的只是获取该时区的相应国家 地区代码 美国 它
  • rspec 在需要存根的私有方法中测试私有方法

    Simplecov 检测到我遗漏了一些测试lib api verson rb class class ApiVersion def initialize version version version end def matches req
  • 整个程序可以是不可变的吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我熟悉不可变性并且可以设计不可变类 但我主要拥有学术知识 缺乏实践经验 请参考上面的链接图片 尚不允许嵌入 从下往上看 学生需要新地址
  • Linux find 命令权限被拒绝

    我想过滤掉不必要的信息 权限被拒绝 这些是命令 的输出find type f name sources list find run lxcfs Permission denied find run sudo Permission denie
  • R 脚本 - 如何在错误时继续执行代码

    我编写了一个 R 脚本 其中包含一个检索外部 Web 数据的循环 数据的格式大多数时候是相同的 但有时格式会以不可预测的方式发生变化 并且我的循环崩溃 停止运行 有没有办法不管错误如何继续执行代码 我正在寻找类似于 VBA 中的 On er
  • Apache Zeppelin 安装 grunt 构建错误

    我的配置如下 Ubuntu 15 04 Java 1 7 Spark 1 4 1 Hadoop 2 7 Maven 3 3 3 我正在尝试从 github 成功克隆 Apache Zeppelin 并使用以下命令后安装它 mvn clean
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求