你好,
我正在我的nhibernate应用程序中实现自定义角色提供程序。每当我想访问nhibernate会话时,我都会调用一个名为repository的存储库。
因此,当我的角色提供程序初始化时
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,但不再出现错误。 谢谢。