2012-06-15 55 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

相关问题