使用Asp.net WebForms的Nhibernate-每个请求的会话

使用Asp.net WebForms的Nhibernate-每个请求的会话,asp.net,nhibernate,orm,Asp.net,Nhibernate,Orm,我使用一个HttpModule来打开一个跨每个请求的会话,它可以很好地处理延迟加载和所有事情 我担心的是,由于我为每个请求打开一个新会话(并将其存储在HttpContext.Current.Items中),因此它会为每个请求打开一个会话,甚至包括请求.css文件和图像。 我记得读过一篇文章,说会话创建是一个非常简单的操作(虽然不知道事务),但无论如何,似乎没有必要打开一个会话来请求一个.css文件 有人对此有什么想法吗?这是个问题吗?或者我在做什么蠢事吗 提前感谢 仅当文件类型为.aspx或.a

我使用一个HttpModule来打开一个跨每个请求的会话,它可以很好地处理延迟加载和所有事情

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

有人对此有什么想法吗?这是个问题吗?或者我在做什么蠢事吗

提前感谢

  • 仅当文件类型为.aspx或.ashx时才创建会话对象:

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


你指的是HttpModule,不是HttpHandler,对吗?你当然是对的,答案现在已经编辑好了。ThanksHow为每个请求(每个aspx/ashx)启动Nhib事务是否昂贵?我可以为每个请求都有一个事务吗?或者我应该在需要时显式地打开它们吗?