Ldap连接抛出对象引用未设置为对象错误的实例
Posted
技术标签:
【中文标题】Ldap连接抛出对象引用未设置为对象错误的实例【英文标题】:Ldap connection throwing object reference not set to an instance of an object error 【发布时间】:2014-12-20 23:55:55 【问题描述】:Ldap 连接抛出对象引用未设置为对象错误的实例
我正在尝试连接到 LDAP 以对用户进行身份验证。这是我的代码,在将连接安全套接字层设置为 true 后,我在 connection.connect 期间遇到异常。
它正在抛出未设置为对象实例的异常对象引用,我已经创建了用于连接的对象,但不知道出了什么问题。有人帮帮我吗?
using LdapConnection = Novell.Directory.Ldap.LdapConnection;
using LdapException = Novell.Directory.Ldap.LdapException;
var ldapHost = WebConfigurationManager.AppSettings["LDAP_HOST"];
var ldapPort = WebConfigurationManager.AppSettings["LDAP_PORT"];
var connection = new LdapConnection SecureSocketLayer = true;
connection.Connect(ldapHost, Convert.ToInt32(ldapPort)); // Getting exception here object reference not set to an instance of an object.
sb = new StringBuilder();
sb.Append(ldapLocation).Append(userName).Append(",").Append(ldapLocationIndia);
connection.Bind(LdapConnection.Ldap_V3, sb.ToString(), password);
任何帮助,请提前致谢。
堆栈跟踪信息:
在 Novell.Directory.Ldap.Connection.connect(字符串主机,Int32 端口,Int32 semaphoreId)
在 Novell.Directory.Ldap.Connection.connect(字符串主机,Int32 端口)
在 Novell.Directory.Ldap.LdapConnection.Connect(字符串主机,Int32 端口)
在 c:\Project\Production Version 2.0\Planner\Planner\Controllers\AccountController.cs:line 106 中的 Planner.Controllers.AccountController.isAuthenticated(LoginModel 模型)
在 c:\Project\Production Version 2.0\Planner\Planner\Controllers\AccountController.cs:line 44 中的 Planner.Controllers.AccountController.Login(LoginModel 模型)
在 lambda_method(闭包,ControllerBase,对象 [])
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,Object[] 参数)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 控制器上下文,IDictionary2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 参数)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeSynchronousActionMethod(ControllerContext 控制器上下文,ActionDescriptor actionDescriptor,IDictionary2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8
1.b__7(IAsyncResult _)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
在 System.Web.Mvc.Async.AsyncResultWrapper.End[TResult](IAsyncResult asyncResult,对象标记)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass37.c__DisplayClass39.b__33()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass4f.b__49()
【问题讨论】:
请发布异常的完整 StackTrace 用堆栈跟踪更新了问题 @user1557020:我只是注意到你很少“赞成”任何有用的答案/cmets,我想鼓励你这样做。你真的应该给那些帮助你的人点赞!只需单击一下即可,因为您自己的积分不会被泄露,这是一种简单的方式来向这些人表明您尊重他们为您提供的帮助! 相信老兄现在会做的。感谢您指出我的错误 @user1557020 你找到解决方案了吗?我在 Novell.Directory.Ldap.NETStandard 库中遇到了同样的问题。 【参考方案1】:您的配置中是否正确设置了ldapHost
和ldapPort
?
connection.connect()
抛出的异常是 tpye LDAPException
,所以我假设它甚至没有尝试连接。
【讨论】:
如果我删除或评论 SecureSocketLayer = true,它工作正常。所以端口和主机是完美的。 你试过var connection = new LdapConnection(); connection.SecureSocketLayer = true;
吗?
是的。我做到了,它导致了问题,如果我评论securesocketlayer = true,它工作正常。否则它的抛出对象引用错误
我不明白。如果将对象创建和 SSL 设置分开,它会起作用吗?根据文档,您只能在创建对象后设置securesocketlayer = true
。请参阅bit.ly/1zvRkWv,第 1.5.3 节。
在您的第一条评论之后,我已经分离了 SSL 设置,它不工作,如果我删除 ssl 设置它的工作,与 ssl 它抛出对象引用错误。以上是关于Ldap连接抛出对象引用未设置为对象错误的实例的主要内容,如果未能解决你的问题,请参考以下文章
Roles.GetRolesForUser 抛出异常对象引用未设置为对象的实例
Silverlight 添加到 List<T> 抛出未设置为对象实例的对象引用