2012-06-15 76 views
0

我想跟蹤一個應用程序錯誤,我不是在WINNT提供者端的專家。下面是我調試的代碼:C#DirectoryEntry對象的安全屬性拋出一個空引用異常

public string GetCurrentRequesterIdentity() 
    { 
     var a = HttpContext.Current.User.Identity.Name.Split('\\'); 

     using (var adEntry = new DirectoryEntry("WinNT://" + a[0] + "/" + a[1])) 
     { 
      return adEntry.Properties["FullName"].Value.ToString(); 
     } 
    } 

當我調試代碼並運行「?新的DirectoryEntry(」 WINNT://域/用戶「)」,其中域和用戶的(據說)有效條目時,窗口返回以下爲ObjectSecurity行:

ObjectSecurity: '新的DirectoryEntry( 「WINNT:// [DOMAIN]/[USER]」).ObjectSecurity' 扔類型 'System.NullReferenceException'

的一個異常我看到該應用程序拋出「找不到網絡路徑」錯誤。我只能一次而不是再次複製這個錯誤。不幸的是,它幾乎每次都會發生在2個生產用戶身上,但從未在測試環境中發生。

有沒有人見過這種情況?或知道在哪裏尋找跟蹤?

回答

0

這最終通過刪除DirectoryEntry行來修復,而是僅引用用戶名的HttpContext.Current.User.Identity.Name.Split('\')。無關緊要,它只返回用戶名而不是登錄用戶的全名。顯然它涉及我們的系統管理員不想處理的AD權限問題,因此刪除代碼最終提供了最簡單的解決方案。

0

看起來像[0]或​​[1]的值爲空。您是否驗證了這些值是否正確以及域和用戶是否存在?您應該調試或記錄[0]或[1]的值並嘗試查找錯誤。

+0

謝謝。這是奇怪的事情:即使使用ObjectSecurity空引用異常,代碼也會運行並返回正確的數據。我仍然試圖確認「WinNT:// DOMAIN/User」是應用程序需要的路徑。 – ewomack

相關問題