我开始这个例外:
分析程序错误消息:连接字符串中指定的容器不存在
这是我的情况:
我有一个2页的WebApp Default.aspx&为Login.aspx。后者包含登录控件。 应用程序配置为使用AD LDS实例作为成员资格存储。
以下是web.config
中感兴趣的部分内容
<authentication mode="Forms">
<forms name=".AuthCookie" loginUrl="Login.aspx" timeout="10" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
<membership defaultProvider="MyDSProvider">
<providers>
<add name="MyDSProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
applicationName="ADSecWebApp"
connectionStringName="MyDSConn"
connectionUsername="CN=Admin,CN=Users,CN=MyOrg,DC=MyDomain,C=CA"
connectionPassword="Welcome1"
connectionProtection="None"
/>
</providers>
</membership>
然后我在我的机器上安装了AD LDS实例。
AD LDS配置为具有一个应用程序分区“CN = MyOrg,DC = MyDomain,C = CA”。
在此分区下,我创建了一个容器“CN = Users,CN = MyOrg,DC = MyDomain,C = CA”
在这个容器下我创建了两个用户:Admin&amp;约翰。两者都已启用并设置了密码(如果是“Admin”,则为“Welcome1”)
此外,Admin已配置为“CN = Administrators,CN = Roles,CN = MyOrg,DC = MyDomain,C = CA”的成员 (我在网上发现了一些文章,建议在ADMembershipProvider配置部分使用connectionProtection =“None”时,然后无法使用Windows帐户,而应使用对用于连接的AD实例具有管理权限的AD帐户。)
此外,我有Windows 7,IIS7,VS 2008 SP1,.NET 3.5
有人能给我一些关于错误的提示吗?我做了很多研究,一个接一个地解决了错误,但似乎我对这个问题感到困惑。
我也会感谢一些解释,为什么我会得到解决方案,因为我是新手。
提前致谢
尤利安
答案 0 :(得分:5)
在同事的帮助下,我发现了问题所在。显然,当我将管理员AD用户添加到AD管理员角色时(=&gt; CN-Roles =&gt; CN-Administrators =&gt;属性=&gt;选择{member} =&gt;点击添加DN =&gt;添加我的管理员用户)我错过了保存或其他错误;无论哪种方式,我的管理员用户都没有保存为管理员成员。
我使用ldp.exe查找问题的原因:从某种意义上说,我能够连接到我的实例,然后将会话绑定到我的CN = Admin用户,尽管我看不到任何内容树视图告诉我们CN = Admin它仍然不是管理员。
还遗漏了一件事:我必须设置我想要登录到我的安全webapp的帐户的userPrincipalName,导致我在创建AD帐户时使用的名称CN = JohnS实际上并未被ActiveDirectoryMembershipProvider使用在验证用户时。我使用了一个像name,john.smith @mail.com这样的电子邮件来获取userPrincipalName,这实际上是用来登录Web应用程序的。
在所有这些之后,我的AD LDS&amp; ASP.NET表单 - 身份验证示例。
希望其他人会觉得这很有用。
谢谢
尤利安