C#DirectoryEntry对象安全属性抛出空引用异常

时间:2012-06-15 18:37:49

标签: c# active-directory

我正在尝试跟踪应用程序错误,而且我对WinNT提供商方面没有任何想法。这是我正在调试的代码:

 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();
        }
    }

当我调试此代码并运行“?New DirectoryEntry(”WinNT:// DOMAIN / User“)”,其中DOMAIN和User(假设是)有效条目时,窗口将返回ObjectSecurity行的以下内容:

ObjectSecurity:'new DirectoryEntry(“WinNT:// [DOMAIN] / [USER]”)。ObjectSecurity'抛出了类型'System.NullReferenceException'的异常

我看到该应用程序抛出错误“未找到网络路径”。我只能复制一次这个错误,而不是再次复制。不幸的是,它几乎每次都发生在2个生产用户身上,但从未在测试环境中发生过。

有没有人见过这种情况?或者知道在哪里追踪它?

2 个答案:

答案 0 :(得分:0)

看起来[0]或[1]的值为空。您是否验证了这些值是否正确以及域和用户是否存在?您应该调试或记录[0]或[1]的值并尝试查找错误。

答案 1 :(得分:0)

最终通过删除DirectoryEntry行来修复,而只是引用HttpContext.Current.User.Identity.Name.Split('\')作为用户名。它只返回用户名而不是登录用户的全名并不重要。显然它与AD的权限问题相关,我们的系统管理员宁愿不处理,因此删除代码最终提供了最简单的解决方案。