【发布时间】:2011-06-04 06:36:40
【问题描述】:
嗨,
我正在我的 nhibernate 应用程序中实现自定义角色提供程序 我有一个存储库,每当我想访问 nhibernate 会话时都会调用它。
所以当我的角色提供者初始化自己时
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) {
base.Initialize(name, config);
Repository = new Repository();
}
然后我覆盖
public override string[] GetRolesForUser(string username) {
var users = Repository.QueryAll<Users>();
//我然后过滤等等
}
但是当这个函数被调用时,我总是得到一个错误,即 NHibernate 会话已关闭。 我调试了 nhibernate 源代码,结果发现这里的会话与我的控制器中的会话有不同的 guid(我也在使用 ASP.NET MVC)。 当我到达这里时,这个特定的会议已经结束。 不知道谁关了我知道它是在应用程序启动时才启动的。
有人知道我做错了什么吗? 我仍想在此提供程序中使用 Nhibernate,但不再收到错误消息。 谢谢
【问题讨论】:
-
你的会话管理策略是什么?
-
我在 application_start 上启动了一个会话工厂,并在存储库构造函数中获得了当前会话
-
我的意思是您在何时何地打开和关闭会话?
标签: asp.net nhibernate roleprovider