在请求完成后,在不同的线程上维护对HttpContext的引用

时间:2012-03-24 14:31:25

标签: c# asp.net multithreading httpcontext

我一直在努力确定在请求完成后维护对HttpContext的只读引用是多么安全。具体来说,我希望在执行请求时获取对HttpContext.Current的引用,然后将对上下文的引用放入内存中的队列,以便稍后在另一个线程上进行评估(可能最多几秒钟)

显然,尝试使用并尝试写入context.Response将无法工作,我对此并不特别感兴趣。相反,我有兴趣在context.Request属性和上下文本身的一些其他值上读取一些值,例如: context.Timestamp,context.Items,也许还有其他一些。

初步测试表明我可以做到这一点,但我正在尝试有意识地编程,而不是巧合。任何人都可以指出任何文档(或者可能是博客文章或来自Jon Skeet的文章),表明在HTTP请求完成后可以维护引用吗?

1 个答案:

答案 0 :(得分:2)

不,这不安全,但它与线程无关。

它是Http 上下文 。当前。那个上下文就像当前请求的"上下文一样"。

请求结束后请不要使用此功能!

上下文中的各种IDisposable资源将被处理掉,因此不要使用它们。在请求期间有效的任何其他内容都无效,因为请求超过

一旦确定了所需的部分,请复制这些部分并保存。