【发布时间】:2014-04-24 22:43:54
【问题描述】:
确定这不是网络问题。我在调试时遇到了这个问题(VS2012 / .Net 4.5 / IIS Express 8.0)
代码:
bool rtn2 = HttpContext.Current.User.IsInRole("MyDomain\\Domain Users");
最终返回 true。但是,可能需要几分钟。
var test = HttpContext.Current;
var test2 = HttpContext.Current.User;
var test3 = HttpContext.Current.User.Identity;
...都非常快。
var test = HttpContext.Current.User.IsInRole("MyDomain\\Domain Users");
var test2 = HttpContext.Current.User.IsInRole("MyDomain\\Domain Users");
第一个电话需要几分钟,第二个是即时的。如果我更改第二个以查找其他组(假设第一个已缓存),它仍然是即时的。
我想也许我遇到了网络问题(我连接到域并通过 VPN 进行调试。)但是,如果我创建一个新的 VS2012 Web 项目并将该代码放在启动页面中,它是即时的。我还可以从我的机器上搜索 Active Directory 并拉出域用户组,并立即查看其中的所有人(有超过 10,000 个用户) - 没问题。那么,这一定是基于项目/配置的问题吗?
我想弄清楚这一点。一些信息:
尝试重新安装 IIS Express 我试过重启 我已经尝试过一个新的测试网络项目 - 立即工作
问题似乎是特定于机器的。我们将不胜感激任何帮助,甚至只是关于其他故障排除步骤的建议。
【问题讨论】:
-
第二次调用更快,因为信息被缓存了。
-
那为什么在检查其他组后会更快?整个 AD 数据库肯定没有被缓存。
-
想到了什么,可能是环境问题。如果 DNS 中的域控制器出现故障,则可能会导致超时,这可能会随机导致 LDAP 连接变慢。每次第一次查询都很慢吗?
-
是的 - 非常一致。我的测试仪项目也是如此。它非常一致地快速。我所做的只是用一个页面创建一个新的 Web 项目。
标签: c# asp.net visual-studio-2012 active-directory httpcontext