CSharp - C# 服务器端等效于 HttpContext?

  显示原文与译文双语对照的内容

我有一个当前使用当前HttpContext来存储LINQ数据上下文的网络应用程序。 在每个用户的基础上,为当前请求保持上下文,每个用户基于 Strahl的 Rick blog


string ocKey ="ocm_" + HttpContext.Current.GetHashCode().ToString("x") 


Thread.CurrentContext.ContextID.ToString();



if (!HttpContext.Current.Items.Contains(ocKey))


{


//Get new Data Context and store it in the HTTP Context


}



但是,我有一些从 global.asax 文件执行的脚本,英镑没有。 HttpContext.Current 是空的,因为服务器是服务器。

是否存在可以用于存储数据上下文的等效对象? 因此,我不必担心创建它,并附加/分离对象? 我只希望在流程的生命周期中持久化上下文。

更新:

我目前正在尝试在我的DAL helper 类中使用一个 static 变量。 在第一次调用类中的某个方法时,DataContext被实例化,并存储在 static 变量中。 在我的流程结束时,调用另一种方法调用DataContext上的Dispose,并将 static 变量设置为 NULL 。

时间: 原作者:

你能不能专门为那些脚本使用一个 static 变量? 那将有与 AppDomain 相同的生命时间。 你可以能应该仔细考虑任何并发问题,但这听起来像保持一个值的最简单方法。

( 我刚刚检查过,虽然可以用 HttpApplication的一个实例来服务多个请求) 。 我没有验证这一点,但是它听起来不安全,将它保存在实例变量中。

编辑:db2的答案表明你希望这个是每个线程。 这个听起来有些奇怪,因为除非你有很多事件发生,否则你很可能会看到它们在不同的线程上执行,从而使整个共享业务变得毫无意义。 如果你真的想要这样的东西,我建议在 HttpApplication -derived类中使用一个实例变量。

原作者:
...