.net – 为什么使用DirectoryEntry对LDAP进行身份验证会间歇性地
如果有人有类似的故事,请在下面发布详细信息!
我正在构建一个需要支持LDAP身份验证的ASP.NET网站. 在Windows上,可以通过Active Directory执行LDAP身份验证(我不是专家,但AD似乎只是ldap的特殊风格).我不控制AD和/或LDAP服务器. 我尝试了各种身份验证方法,但我已经确定每次身份验证尝试使用一个DirectoryEntry: using (DirectoryEntry de = new DirectoryEntry(ldapPath,ldapUsername,password,AuthenticationTypes.ServerBind)) { try { // Bind to the native AdsObject to force authentication. object obj = de.NativeObject;//not IDisposable } catch(... 如果出现任何错误,检索NativeObject会导致COMException,例如,如果身份验证失败,则异常类似于“登录失败:未知用户名或密码错误”,如果ldap服务器无法访问或超时,则类似“服务器无法运行.“ 这基本上是有效的,但是在可变天数之后,总是从早上开始,我们得到“服务器无法运行”.直到IIS重新启动.这显然不是一个很好的长期解决方案,但据我所知,错误在于DirectoryEntry下的Com Object – 不是一件容易修复的事情. This problem isn’t new or unknown.有些人通过微软的支持得到了不同的结果;基本上答案似乎归结为“采取你的ldap路径,并创建一些等效的替代品,也许其中一个将工作”.每次尝试,或者当然,你几天都不知道它是否真的有效,并且在找到真正的解决方案之前,我们回到“每晚重启Windows服务器”. 首先,我尝试了格式化的ldap路径 * "LDAP://server.uri:636" * "LDAP://insecure.server.uri:389" * "LDAP://server.uri:636/cn=username,ou=staff,o=myOrganisation,c=org" 始终使用具有以下模式的用户名: * "cn=username,c=org" 所有这些方法最初都有效,但在可变天数后失败(并在IIS重置后开始工作).服务器在win 2k3上运行IIS6. 如果其他人有这些问题,请在下面发布,也许最终我们会找到一个可以使用的模式,或者有足够数量的例子来说服微软解决这个问题. 解决方法
虽然我无法准确找出导致此问题的原因,但似乎必须在迁移到非群集服务器后停止.
关于这个bug有其他奇怪的事实: >重新启动asp.net主机进程不足以解决问题.这很奇怪;你希望操作系统强行释放进程死亡的资源 总而言之,这看起来非常像win2k3中启用了群集的驱动程序或内核问题,而不是.NET相关问题. 因此,如果其他人偶然发现类似的问题,请检查群集是否已启用 – 这可能会让您免于数周的麻烦. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net core EF code first
- 初识ABP vNext(12):模块的独立运行与托管
- asp.net-core – 为什么我的JWT承载认证在令牌表
- asp.net – 朋友选择算法
- asp.net-mvc – ASP.NET MVC4 CustomErrors Defa
- asp.net – WebForms中的Tabbing行为
- asp.net – Intuit合作伙伴平台(IPP)QuickBooks
- asp.net-mvc – MVC3 Url.Action查询字符串生成
- asp.net-mvc – 401响应代码的json请求与ASP.NET
- asp.net-mvc – 如何在Microsoft.AspNet.Mvc.Fac