NHibernate.HibernateException:現在のコンテキストにバインドされませんセッション

StackOverflow https://stackoverflow.com/questions/1143611

  •  16-09-2019
  •  | 
  •  

質問

私はCurrentSessionを取得しようとしています。このエラーを取得しています。

NHibernate.Context.CurrentSessionContext.CurrentSession()

で、

NHibernate.Impl.SessionFactoryImpl.GetCurrentSession()
役に立ちましたか?

解決

あなたはセッションコンテキストに現在のセッションを設定するための責任があります。 NHibernateのドキュメントのこのセクションをrel="noreferrer">

他のヒント

デイヴィッド・Mと同じようにあなたがあなたのNHibernateのセッションを結合していることを確認する必要があり、と述べました。ここで私は私のASP.NETアプリケーションで、今それを行う方法があります:

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
    }
}

私はすべてのリクエストに応じて、私のセッションをバインドするカスタムHttpModuleをを作成し、私はこのように私のweb.configファイルにこのモジュールを追加します:

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

私はあなたの設定は、この異なっていると確信しているが、これは私が私のセッションをバインドする方法のほんの一例です。これは少しお役に立てば幸いです。

Studio 2010には、2つのHttpModulesセクションを作成します、一つはIIS 7.のsystem.webあまりにも1であなたのNHibernateのHttpModuleを登録してくださいためのものです。

scroll top