2011-04-27 61 views
0

嘿,我有我自己的MembershipProvider,我在构造函数中打开一个NHibernate的会话:的MembershipProvider和缓存(NHibernate的)

public class OwnMembershipProvider : MembershipProvider 
{ 

    protected NHibernate.ISession HibSession; 

    public OwnMembershipProvider() 
    { 
     HibSession = NHibernateTools.OpenSession(); 
    } 
//... 

我想通了,如果我设置一个断点到构造函数,它在应用程序启动期间仅调用一次。这让我很头疼,因为每个请求都使用相同的NHibernate-Session,导致了一些有趣的事情,比如“哦,我无法更改我的密码”(NHibernate会话在调用ValidateUser()时返回缓存的用户,该用户仍然包含旧密码)。

如何强制框架为每个请求重建MemberShipProvider?或者应该如何改变?

THX任何的窍门

回答

0

在每个方法打开一个单独的会话听起来是个不错的主意。更好的是,为每个HTTP请求打开一个会话和事务,然后在请求结束时提交事务。

+0

是啊,我也结束了相同的想法。我只是在'ValidateUser()'方法中命令一个新的会话。 – sl3dg3 2011-04-27 16:30:33