【问题标题】:Nhibernate with Asp.net WebForms - Session per Request使用 Asp.net WebForms 进行休眠 - 每个请求的会话
【发布时间】:2011-05-06 09:47:26
【问题描述】:

我正在使用一个 HttpModule 打开一个跨越每个请求的会话,它非常适合延迟加载和一切。

我担心的是,由于我为每个请求打开一个新会话(并将其存储在 HttpContext.Current.Items 中),它会为每个请求打开一个会话,甚至包括对 .css 文件和图像的请求的请求。 我记得读过会话创建是一个非常轻量级的操作(虽然不知道事务),但无论如何似乎没有必要打开会话以请求 .css 文件?

任何人对此有一些想法,这是一个问题和/或我在做一些愚蠢的事情吗?

提前致谢

【问题讨论】:

  • 你的意思是HttpModule,不是HttpHandler,对吧?
  • 您当然是对的,现在正在编辑答案。谢谢

标签: asp.net nhibernate orm


【解决方案1】:
  • 仅当文件类型为 .aspx 或 .ashx 时才创建会话对象:

        switch (context.Request.CurrentExecutionFilePathExtension.ToLower())
        {
            case ".aspx":
            case ".ashx":
                context.Items[ContextKey] = CreateMySession();
                break;
        }
    
  • 或者将会话创建封装在一个属性getter中,清理检查是否session != null

【讨论】:

  • 为每个请求(每个 aspx/ashx)开始 Nhib 事务的成本是多少?我可以为每个请求进行事务处理,还是应该在需要时显式打开它们?
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 2012-05-26
  • 2017-04-13
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
相关资源
最近更新 更多