【问题标题】:System.DirectoryServices & IIS - Get User NameSystem.DirectoryServices & IIS - 获取用户名
【发布时间】: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


【解决方案1】:

我通过将网站的PhysicalPathCredentials 设置为帐户来解决这个问题。但我无法找出问题的原因,但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多