配置
我有一个带有如下配置的 asp.net Web 应用程序:
...
<configuration>
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://testdomain.com" />
...
<membership defaultProvider="MyADMembershipProvider">
<providers>
<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" />
</providers>
</membership>
...
<authentication mode="Forms">
<forms loginUrl="~/account/Logon" name=".ADAuthCookie" timeout="43200" enableCrossAppRedirects="true"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
应用程序
我对所有这些 AD 身份验证都是新手,所以我不知道这里出了什么问题。长期以来,这些配置都完美运行。
它只是这样工作:
- 每次用户访问该站点时,它都会将用户重定向到登录页面。
- 然后用户填写AD用户名和密码登录
- 然后所有的身份验证和授权等等
问题
现在,每次用户访问该站点时,它都会返回错误
配置错误
说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。
解析器错误消息:指定域中不存在默认用户容器。
源错误:
[它指向我的 MyADMembershipProvider 配置]
我的问题
- 这里有什么问题?
- 我找不到有关此错误的太多信息。这是什么错误?是什么原因造成的?
- 我不确定是什么,但也许有一两次硬化。什么样的硬化会导致这个问题?
- 尽管这似乎可行,但我试图避免将 connectionUsername 和 connectionPassword 放在配置中,因为我们没有为此目的指定广告用户。除此之外还有什么解决办法吗?
更新 [2013/06/03]
在四处询问并使用 dsquery 检查后,一位同事告诉我设置 IIS 应用程序池标识。它使用 connectionString="LDAP://testdomain.com" 工作,在提供程序配置中没有容器字符串,也没有 connectionUsername 和 connectionPassword。
IIS 7 (Win Server 2008 R2) -> 应用程序池 -> 右键单击应用程序池 -> 高级设置 -> 展开进程模型 -> 将标识设置为特定用户帐户/密码(默认标识为:ApplicationPoolIdentity)
虽然没有解决问题,但似乎证明了以前的 AD 身份验证在 IIS 应用程序池使用 ApplicationPoolIdentity 时不会返回任何错误(未找到默认容器或未找到指定容器)。然后有些事情发生了变化,现在它不起作用。