2011-04-27 63 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