PerWebRequest LifetimeManager 及其他 (Asp.net Mvc)
目前,我使用 HttpContext.Current.Items 作为后备存储创建了自定义 PerWebRequestLifetimeManager。我将生命周期管理器用于 Linq2Sql DataContext。
一切工作正常,直到我需要使用缓存来存储数据(5 分钟)。 5 分钟后,我需要从数据库检索数据并将其放入缓存中。为此,我需要使用 Linq2Sql DataContext 来检索数据。但在此期间,HttpContext.Current 为 null,因为这是在缓存过期时发生的;不在网络请求中。
那么,对于这种场景我应该使用什么样的 LifetimeManager 呢?
提前致谢。
Currently, I created my custom PerWebRequestLifetimeManager using HttpContext.Current.Items as backing store. I used that lifetime manager for Linq2Sql DataContext.
Eveything is working fine until I need to use Cache for storing data (for 5 min). After 5 min, I need to retrieve data from DB and put it into the Cache. To do so, I need to use Linq2Sql DataContext for retrieving data. But during that time, HttpContext.Current is null because which was happened when cache is expired; not in Web Request.
So, what kind of LifetimeManager should I use for this scenario?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要长期存在的 DataConext 吗?使用容器 LifeTimeManager。我将创建一个驻留在应用程序级别的容器(可能在您的 Global.asax 中),然后使用它来解析此特定场景的 DataContext。
我会避免希望这些内容保留在缓存中,相反,如果可以的话,您可以考虑异步运行该任务。
希望这有帮助。
You need a long standing DataConext? Use a Container LifeTimeManager. I would create a Container that resides at the Application level (probably in your Global.asax) and then use that to resolve your DataContext for this specific scenario.
I would avoid hoping that stuff is retained in Cache, instead you could look at possibly running that task asynchronously if you can.
Hope this helps.