私は WCF サービス (IIS でホストされている) を作成しています。Nuget から Ninject (3.0.0.0、WCF 拡張機能付き) と NHibernate をダウンロードしました。これらを MVC コンテキストで一緒に使用しましたが、WCF ではまだ使用していません。サービスへの呼び出しごとに新しいセッションが必要です。しかし、それを達成する方法についての良いチュートリアルが本当に見つかりません。
今のところ、これを "NinjectWebCommon.cs" ファイルに入れます (MVC プロジェクトで行っているように)。
private static void RegisterServices(IKernel kernel)
{
var helper = new NHibernateHelper(WebConfigurationManager.ConnectionStrings["xx"].ConnectionString, Assembly.GetAssembly(typeof(Template)));
kernel.Bind<ISessionFactory>().ToConstant(helper.SessionFactory).InSingletonScope();
kernel.Bind<IDbSessionFactory>().To<DbSessionFactory>().InSingletonScope();
kernel.Bind<IDbSession>().To<DbSession>().InRequestScope();
//Repository
//Bind the repository stuff here
}
しかし、これは私が期待するように実際には機能していません。誰かが私がここで間違っていることを教えてもらえますか?
編集
もう少し詳しく。サービスが開始されると、NHibernate セッション オブジェクトが起動されることがわかります。しかし、実際には破棄に失敗します。セッションを閉じようとすると、NullReferenceException が発生します。Nugetの最新バージョンをすべて使用しています。