0

配置

我有一个带有如下配置的 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 配置]

我的问题

  1. 这里有什么问题?
  2. 我找不到有关此错误的太多信息。这是什么错误?是什么原因造成的?
  3. 我不确定是什么,但也许有一两次硬化。什么样的硬化会导致这个问题?
  4. 尽管这似乎可行,但我试图避免将 connectionUsername 和 connectionPassword 放在配置中,因为我们没有为此目的指定广告用户。除此之外还有什么解决办法吗?

更新 [2013/06/03]

在四处询问并使用 dsquery 检查后,一位同事告诉我设置 IIS 应用程序池标识。它使用 connectionString="LDAP://testdomain.com" 工作,在提供程序配置中没有容器字符串,也没有 connectionUsername 和 connectionPassword。

IIS 7 (Win Server 2008 R2) -> 应用程序池 -> 右键单击​​应用程序池 -> 高级设置 -> 展开进程模型 -> 将标识设置为特定用户帐户/密码(默认标识为:ApplicationPoolIdentity)

虽然没有解决问题,但似乎证明了以前的 AD 身份验证在 IIS 应用程序池使用 ApplicationPoolIdentity 时不会返回任何错误(未找到默认容器或未找到指定容器)。然后有些事情发生了变化,现在它不起作用。

4

0 回答 0