我有一个 Web 应用程序,当前使用当前的 HttpContext 来存储 LINQ 数据上下文。上下文针对当前请求、基于每个用户、每个里克·斯特拉尔的博客 http://www.west-wind.com/weblog/posts/246222.aspx:
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。HttpContext.Current 为 NULL,因为服务器是发出“请求”的人。
是否有一个等效的对象可用于存储数据上下文?所以我不必担心重新创建它以及附加/分离对象?我只想在进程的生命周期中保留上下文。
UPDATED:
我目前正在尝试在 DAL 帮助程序类中使用静态变量。第一次调用类中的方法之一时,DataContext 被实例化,并存储在静态变量中。在过程结束时,我调用另一个方法,该方法在 DataContext 上调用 Dispose,并将静态变量设置为 NULL。
您不能只为这些脚本使用专门的静态变量吗?其寿命将与AppDomain
。您可能应该仔细考虑任何并发问题,但这听起来是保留值的最简单方法。
(我刚刚检查过,虽然有一个实例HttpApplication
可用于服务多个请求,每个请求一次仅服务一个请求 - 这表明为并发请求处理创建多个实例。我还没有验证这一点,但听起来确实将其保留在实例变量中是不安全的。)
编辑:乔什的回答表明您希望这是每个线程的。这对我来说听起来有点奇怪,除非你有一个lot对于发生的这些事件,您很可能只会看到它们在不同的线程上执行,从而使整个共享业务变得毫无意义。如果你真的想要这样的东西,我建议只在HttpApplication
-派生类 - 正是出于上面段落中描述的原因:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)