Question

I am getting this error when I am trying to get the CurrentSession

NHibernate.Context.CurrentSessionContext.CurrentSession()

at

NHibernate.Impl.SessionFactoryImpl.GetCurrentSession()
Was it helpful?

Solution

You are responsible for setting the current session on the session context. See this section of the NHibernate documentation. If you haven't done this, then there will be no current session to retrieve.

OTHER TIPS

Like David M said, you need to make sure you are binding your NHibernate session. Here's the way I do it right now in my ASP.NET app:

public class NHHttpModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.EndRequest += ApplicationEndRequest;
        context.BeginRequest += ApplicationBeginRequest;
    }

    public void ApplicationBeginRequest(object sender, EventArgs e)
    {
        CurrentSessionContext.Bind(NHSessionFactory.GetNewSession());
    }

    public void ApplicationEndRequest(object sender, EventArgs e)
    {
        ISession currentSession = CurrentSessionContext.Unbind(
            NHSessionFactory.GetSessionFactory());
        currentSession.Close();
        currentSession.Dispose();
    }

    public void Dispose()
    {
        // Do nothing
    }
}

I create a custom HttpModule that binds my session on every request and then I add this module to my web.config like this:

<httpModules>
  <add name="NHHttpModule" type="MyApplication.Core.NHHttpModule, MyApplication,
  Version=1.0.0.0, Culture=neutral" />      
</httpModules>

I'm sure your configuration is different then this but this is just an example of how I bind my session. Hope this helps a little.

Studio 2010 will create 2 httpModules sections, one is for IIS 7. Be sure to register your nhibernate httpmodule in the system.web one too.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top