我使用GetTokenInformation
和TokenGroups
標誌檢索特定標記所屬的所有組。然後,我循環遍歷每個返回的SID並使用LookupAccountSid
來獲取用戶名和域。我調用LookupAccountSid
兩次:第一次獲取名稱和域字符數組的大小,第二次填充已分配的StringBuilder
s。LookupAccountSid每次撥打+600毫秒
我得到很長時間的延遲。我運行了ANTS以查看問題是什麼,並發現如果用戶是23個組的一部分,則整個序列需要15秒!探查器指向LookupAccountSid的第一個調用,並指出每次調用平均爲652毫秒。
這是呼叫的樣子:
LookupAccountSid(null, tokenGroups.Groups[i].SID, null, ref accountCount, null,
ref domainCount, out snu);
accountCount
和domainCount
是在此之前調用初始化爲0。最後,通話正在進行,但這種延遲時間很長。我究竟做錯了什麼?
網絡延遲與域控制器或DC本身交談是我的猜測。 – 2010-08-30 14:32:34