2011-04-11 93 views
2

嗨,我遇到問題集成啓動用戶的能力,因爲sessionCollection始終爲空。DomainAccessGuard.Sessions始終爲空

public void KickStaleUsers() 
    { 
     foreach (DomainAccessGuard.Session ses in DomainAccessGuard.Sessions) //<--- This is null 
     { 
      if (DateTime.Now.Subtract(ses.LastRequest).Minutes >= 60) 
      { 
       DomainAccessGuard.Kick(ses.SessionID); 
       Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this); 
      } 
     } 
    } 

我從代理運行此

有誰知道它爲什麼是空?

+0

如果是DomainAccessGuard.Sessions那是空的,不是你正在測試的單個會話,然後you'l需要張貼在那裏你創建對象的代碼。它是空的DomainAccessGuard,或者它的會話集合是空的(如果它的空值,那麼你需要查看類代碼),還是實際上是集合中的空值? – 2011-04-12 08:50:33

回答

0

編輯:請參閱評論問題。 需要更多代碼/說明。

如果DomainAccessGuard爲空,則發佈創建對象的位置的代碼。

如果DomainAccessGuard.Sessions爲空,則發佈填充會話集合的代碼。

如果DomainAccessGuard.Sessions(集合)是null那麼你需要發佈集合實例化的代碼 - 雖然我會發現有點奇怪。

如果從集合中的各個DomainAccessGuard.Session你試圖訪問的UserName爲null,則以下可能適用:

它看起來對我來說,你想讀從用戶名你剛剛踢的會話。這不會讓你的會議空?

這可能會實現:

Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this); 
DomainAccessGuard.Kick(ses.SessionID); 

這只是一個猜測,我一無所知DomainAccessGuard。

+0

DomainAccessGuard可以被實例化,但是,所有的方法都是靜態的,所以它沒有任何意義,做它或我失去了一些東西? – 2011-04-13 09:10:19

0

需要調用DomainAccessGuard.GetAccess()來初始化會話收集

if(DomainAccessGuard.GetAccess()) 
{ 
    foreach (DomainAccessGuard.Session ses in DomainAccessGuard.Sessions) //<--- This is null 
    { 
     if (DateTime.Now.Subtract(ses.LastRequest).Minutes >= 60) 
     { 
      DomainAccessGuard.Kick(ses.SessionID); 
      Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this); 
     } 
    } 
} 
+0

它不工作,我仍然收到nullReference: 異常:System.NullReferenceException 消息:對象引用未設置爲對象的實例。 來源:Sitecore.Kernel at Sitecore.Web.Authentication.DomainAccessGuard.GetAccess(User domainUser) at FTZ.CMS.Automatics.UserAgent.KickStaleUsers()in C:\ Website \ Automatics \ UserAgent.cs:line 15 – 2011-04-13 09:11:12

+0

hmm 。當我在一個測試MVC方法中嘗試它時,我得到了上述錯誤,但添加了GetAccess()方法使其工作。使用反射器我發現這是實例化Sessions集合的方法。我只是在計劃任務中嘗試了相同的操作,並且您是正確的GetAccess()方法會拋出上述錯誤,但是如果我將其刪除,則它運行良好。你是否正在做代理中的其他任何事情,比如切換網站上下文或其他內容? – 2011-04-13 23:10:46

+0

不知道它是否有所作爲,但我在最新的6.4.1發佈(110324) – 2011-04-13 23:11:57