【发布时间】:2011-11-15 14:45:24
【问题描述】:
我不确定这是否太过分进入系统管理领域,但我还是会问我的问题 :)
我正在用 MVC3 开发一个网站。该站点使用约束委派来模拟 Windows 域中的用户并连接到该用户下的 SQL Server。这一切都没有问题。
我要做的是访问已登录用户名的显示名称属性(使用以下代码):
string displayName;
var context = new PrincipalContext(ContextType.Domain, "contoso");
var userPrincipal = UserPrincipal.FindByIdentity(context,
IdentityType.SamAccountName,
userName);
displayName = userPrincipal.DisplayName;
我收到 LDAP 操作错误:
异常详细信息:System.Runtime.InteropServices.COMException:发生操作错误。
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext 上下文,IdentityType identityType,字符串 identityValue)
奇怪的是:
- 此操作在验收测试服务器上成功(相同配置、相同域、相同应用程序池用户、不同机器)。
- 使用远程桌面连接到运行 ASP.NET 应用程序池的用户下的生产机器后,此操作在控制台应用程序中成功。
- 操作从具有正常域帐户的随机工作站成功。
- 在生产服务器上的网站中操作失败。
【问题讨论】:
-
本地账号是否有权限查询AD?我认为域上的用户开箱即用,也许本地帐户受到限制?我想是在黑暗中拍摄的。我让你的代码在本地运行良好,但我从 Infrastructure Ogres 获得了一些额外的权限。
标签: asp.net-mvc ldap directoryservices