【发布时间】:2017-08-09 12:04:59
【问题描述】:
我正在创建一个服务来搜索 LDAP 中的用户。这应该相当简单,可能做了一千次,但我似乎无法正确突破。我以为我拥有它,但后来我将它部署到 IIS,一切都崩溃了。
以下设置为环境变量:
ldapControllerldapPort-
adminUsername???? 肯定是与错误报告不同的用户 adminPasswordbaseDn
并通过我的 Startup.Configure 方法读入。
编辑我知道它们可用于 IIS,因为我在 REST 端点中返回了它们。
这是我的代码:
// Connect to LDAP
LdapConnection conn = new LdapConnection();
conn.Connect(ldapController, ldapPort);
conn.Bind(adminUsername, adminPassword);
// Run search
LdapSearchResults lsc = conn.Search(
baseDn,
LdapConnection.SCOPE_SUB,
lFilter,
new string[] { /* lots of attributes to fetch */ },
false
);
// List out entries
var entries = new List<UserDto>();
while (lsc.hasMore() && entries.Count < 10) {
LdapEntry ent = lsc.next(); // <--- THIS FAILS!
// ...
}
return entries;
正如我所说,在 Visual Studio 中进行调试时,一切正常。部署到 IIS 时,错误是;
用户“DOMAIN\IIS_SERVER$”登录失败
为什么? adminUsername中指定的用户应该是用来登录的用户(通过conn.Bind(adminUsername, adminPassword);),对吧?那么,为什么它会爆炸说是 IIS 用户是进行登录的用户呢?
编辑我正在使用 Novell.Directory.Ldap.NETStandard
EDIT 上面错误中指定的“用户”实际上根本不是用户。它是运行 IIS 的计算机的 AD 注册名称...如果这有什么不同的话。
UPDATE 与同事协商后,我在IIS上建立了一个新的应用程序池,并尝试以指定用户而不是默认的passthrough来运行应用程序。无论我设置哪个用户,都完全相同的错误消息。
【问题讨论】:
-
The following is setup as environment variables:IIS 用户可以读取那些环境变量吗? -
制作一个只呈现环境变量的网页。
-
绝对肯定 IIS 可以读取我的环境变量@mjwills。更新的问题。
标签: c# visual-studio iis ldap .net-core