我正在使用 C# ASP.NET 开发一个 MVC2 应用程序。
在我的应用程序中,我使用 ActiveDirectoryMembershipProvider 进行用户身份验证。下面是我的 web.config 文件的片段。
如果我在连接字符串中使用全局编录端口 3268,则会收到错误“GC 端口上的 LDAP 连接不支持 Active Directory”。我对此错误消息进行了谷歌搜索,但无法找到合适的解决方案。许多人建议使用端口 389,有些人建议更改代码。但我希望能够使用 GC 端口让用户连接到不同的森林,因为它更干净。
一些观察:
- 相同的连接字符串(使用端口 3268)在我公司 i 的其他应用程序中运行良好。
- 当我将连接字符串更改为指向端口 389 时,它可以完美运行,即属于本地域的人能够登录。但是来自另一个域的人不能。
- 我在我的 AcconuntModel 和 AccountController 中放置了断点。连接字符串指向端口 3268,Membership.Provider 抛出“ConfigurationErrorsException”。
如果有人可以帮助我解决此问题,那将非常有帮助。
网络配置:
<add name="ADConnectionString" connectionString="LDAP://myADServer.abc.ad:389/DC=abc,DC=ad" />
<membership defaultProvider="MyADMembershipProvider">
<providers>
<clear />
<add connectionStringName="ADConnectionString" maxInvalidPasswordAttempts="1000" connectionUsername="ldapuser@abc.ad" connectionPassword="password" connectionProtection="None" enableSearchMethods="True" name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider,MySql.Web,Version=6.5.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" />
</providers>
</membership>
<!-- Added for custom provider -->
<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="DDMS_Custom_RoleProvider">
<providers>
<clear />
<add applicationName="/" connectionStringName="ddms_dataEntities2" name="DDMS_Custom_RoleProvider" type="DDMS_sourcecode.Utilities.DDMS_Custom_RoleProvider, DDMS_sourcecode" />
<add connectionStringName="ApplicationServices" applicationName="/" autogenerateschema="true" name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider,MySql.Web,Version=6.5.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" />
</providers>
</roleManager>