C# “使用LDAP进行表单身份验证”;“服务器不可用”;错误

C# “使用LDAP进行表单身份验证”;“服务器不可用”;错误,c#,asp.net,authentication,active-directory,C#,Asp.net,Authentication,Active Directory,我正在使用Active Directory和表单身份验证登录我们的一些内部网站。有时,当用户登录时,会发生异常。我收到一封关于所有异常的电子邮件,到目前为止,这是我唯一不知道如何修复的异常。我已经断断续续地研究了几个星期,但我没有运气解决这个问题 来源: System.DirectoryServices.Protocols 日期和时间: 2014年6月1日上午8:37 消息: 服务器不可用 堆栈跟踪: 在 System.DirectoryServices.Protocols.LdapConnec

我正在使用Active Directory和表单身份验证登录我们的一些内部网站。有时,当用户登录时,会发生异常。我收到一封关于所有异常的电子邮件,到目前为止,这是我唯一不知道如何修复的异常。我已经断断续续地研究了几个星期,但我没有运气解决这个问题

来源:
System.DirectoryServices.Protocols

日期和时间:
2014年6月1日上午8:37

消息:
服务器不可用

堆栈跟踪:

在 System.DirectoryServices.Protocols.LdapConnection.BindHelper(NetworkCredential) newCredential,布尔值needSetCredential)
位于System.Web.Security.ActiveDirectoryMembershipProvider.ValidateCredentials(字符串 用户名、字符串和密码)
位于System.Web.Security.ActiveDirectoryMembershipProvider.ValidateUserCore(字符串 用户名、字符串和密码)
位于System.Web.Security.ActiveDirectoryMembershipProvider.ValidateUser(字符串 用户名、字符串和密码)
在System.Web.UI.WebControl.Login.AuthenticateSingMembershipProvider(AuthenticateEventArgs)中 e)
在System.Web.UI.WebControl.Login.AttemptLogin()上 位于System.Web.UI.WebControls.Login.OnBubbleEvent(对象源,EventArgs e)
在System.Web.UI.Control.RaiseBubbleEvent(对象源,EventArgs args)
在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)

用户:

浏览器信息:

浏览器功能,类型=IE8,名称=IE,版本=8.0,主要 版本=8,次要版本=0,平台=WinXP,是Beta=False,是 Crawler=False,Is AOL=False,Is Win16=False,Is Win32=True, 支持Frames=True,支持Tables=True,支持cookie= True,支持VBScript=True,支持JavaScript=3.0,支持 Java Applets=True,支持ActiveX控件=True,支持 JavaScript版本=1.5

我无法在开发服务器上复制此错误。这很奇怪,因为它会抛出异常,然后他们可以很好地登录。有些日子我根本没有收到这个例外,而有些日子它是从墙上掉下来的。这可能是生产服务器的问题吗?可能是缺少设置或其他什么?我真的不知道这是怎么回事。有人有这方面的经验吗

这就是我在
web.config

连接字符串

<add name="ADService" 
     connectionString="LDAP://domain/OU=users,DC=domaincontroller,DC=net" />

会员资格提供商

 <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
      <providers>
        <clear />
        <!--Membership provider for Active Directory-->
        <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,  System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="ADService" attributeMapUsername="sAMAccountName" />
      </providers>
    </membership>

我不知道发生了什么事。感谢您的帮助

更新:我们目前正在做一个大的发布,包括一个单一的登录。我们仍在使用表单身份验证和Active Directory。我们建立了一个全新的生产服务器。它还没有上线,但有些人可以访问它。我已经在这个新服务器上收到了相同的消息。这是Server2008R2标准。确切地说,我们使用的是IIS版本7.5.7600.16385。这个异常对我来说很烦人,对用户来说也很烦人。在当前的制作中,这种情况可能不会一直发生,但有时不会发生一次(不确定是不是因为这是一个缓慢的一天,人们没有使用该网站),然后有时会发生疯狂的情况,我可以得到大约15到20个例外。(如果不是更多)
我研究了多个问题。其他人也有类似的问题,但当他们输入正确的用户名但密码错误时,他们的问题就会出现。我已经尝试输入错误的密码数百次,但我无法复制的问题

只是一个想法-不确定这是否真的是问题所在,但试试看

Active Directory中的
用户
容器是一个通用容器(这些容器的前缀是
CN=
)-不是一个组织单位(前缀是
OU=
)-请尝试以下配置:

connectionString="LDAP://domain/CN=users,DC=domaincontroller,DC=net" 

嗨,我的申请中也有这个问题

用户登录时会随机收到这条消息,这让我抓狂

我想我已经解决了这个问题,提供了完整的windows名称和端口,而不仅仅是使用AD服务器主机名

<add key="LDAPPath" value="LDAP://LDAPSERVER.be.ndl.OURDOMAIN.com:389/DC=be,DC=ndl,DC=OURDOMAIN,DC=com"/>


我希望这能有所帮助。

我刚刚遇到同样的问题。我跳到DNS服务器上,发现在我遇到问题时记录了以下警告:

DNS服务器正在等待Active Directory域服务(AD DS) 表示目录的初始同步已完成 已完成。DNS服务器服务在初始化之前无法启动 同步已完成,因为关键DNS数据可能尚未同步 已复制到此域控制器。如果AD DS事件中的事件 日志表明DNS名称解析存在问题, 考虑为这个域添加另一DNS服务器的IP地址 指向此服务器的Internet协议属性中的DNS服务器列表 计算机。此事件将每两分钟记录一次,直到AD DS完成 表示初始同步已成功完成


在我完成故障排除后,我可以使用AD凭据登录到我的ASP.NET webapp。我认为这是一个DNS服务器无法启动的问题,直到Active Directory域服务初始同步完成。

我将在下一版本中试一试。感谢您的想法。这看起来不起作用。我们在se OU=商店,据我所知,连接字符串将搜索该OU中的所有用户(按照广告设置的方式,每个商店都有自己的OU,其中包含用户)。谢谢你的想法!我还没有尝试过端口的想法。我打算尝试一下:636,因为它是安全端口。刚刚上传了最新版本,希望它能起作用。它已经结束了