asp.net – “HttpContext.Current”属性和相关事物的交叉线程使
我从&基本ASP.NET与C#中的示例>下面的语句:
我想知道大胆部分的根本原因,一件事导致另一个,这里是我的想法:
但我不太确定如果我犯了任何错误。 任何评论将深表谢意。 谢谢。 加 这里的堆栈限制为用户堆栈。 解决方法
有四件事情一起工作,导致你正在问的行为:
> HttpContext是一个实例对象,它的引用可以在HttpContext.Current中找到 结论我们可以从上面的动词: >因为HttpContext是一个实例对象而不是静态的,我们需要它的引用来访问它 把这一切,在什么原因HttpContext.Current不工作在一个新的线程? Thread.CurrentThread引用更改,发生在切换线程时,更改HttpContext.Current引用,这将阻止我们到达我们想要的HttpContext实例。 要重申,这里唯一神奇的事情是Thread.CurrentThread引用每个Thread中不同的对象。 HttpContext就像任何其他实例对象一样工作。由于同一AppDomain中的线程可以引用相同的对象,所以我们要做的就是将HttpContext的引用传递给我们的新线程。没有要加载的上下文信息或类似的东西。 (有一些相当严重的潜在问题,绕过HttpContext到其他线程,但没有任何东西阻止你这样做)。 我在研究过程中遇到的几个最后一个副词: >在某些情况下,线程的ExecutionContext被“流”(复制)从一个线程到另一个线程。为什么HttpContext不会“流”到我们的新线程?因为HttpContext不实现ILogicalThreadAffinative接口。存储在ExecutionContext中的类只有在实现了ILogicalThreadAffinative的情况下才会流动。> ASP.NET如何移动HttpContext从线程到线程(线程敏捷)如果没有流?我不完全确定,但它看起来可能会通过它在HttpApplication.OnThreadEnter()。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 会话变量保存在哪里?
- Asp.Net Webforms Vs Asp.Net WebSite(Razor)Vs Asp.Net MV
- asp.net – 如何正确地大写希腊字在.NET?
- asp.net-mvc-3 – 自动映射似乎不像’Name’字段
- asp.net-web-api – 如何自定义认证我自己的表在asp.net we
- ASP.NET Core 找不到 npm指令异常
- asp.net-mvc – 缓存直到ASP.NET MVC和Entity Framework 4.
- asp.net实现在非MVC中使用Razor模板引擎的方法
- asp.net-mvc – ASP.Net MVC – 重定向到路由提供Redirect
- asp.net-mvc-3 – MVC 3 jQuery对话框的客户端验证
- asp.net-mvc-3 – 找不到视图’错误’或其主人
- asp.net – 错误HTTP 404.11通过查询字符串传递帐
- 在ASP.NET Core MVC 6中记录到数据库
- asp.net – RequiredFieldValidator要求用户单击
- asp.net-mvc-3 – 是否可能显示从ASP.NET MVC 3中
- asp.net-mvc – razor要求;在做什么时使用(Html.
- .net – 实体单位工作和存储库模式的好处
- asp.net – 使CustomValidator与ValidationSumma
- asp.net – 如何将HTML页面转换为.ASPX页面并向其
- asp.net-mvc – ASP.NET MVC中的HTML清理程序,用