0

我正在尝试跟踪应用程序错误,但我不是 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 个生产用户来说,几乎每次都会发生这种情况,但在测试环境中从未发生过。

有没有人见过这种情况?或者知道去哪里寻找它?

4

2 回答 2

0

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

于 2012-06-15T18:48:18.623 回答
0

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

于 2012-06-29T21:09:58.763 回答