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, IDictionary2 参数) 在 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__DisplayClass81.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】:

您的配置中是否正确设置了ldapHostldapPort

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 抛出异常对象引用未设置为对象的实例

对象引用未设置为在单独项目中从 DAL 抛出的对象的实例

C#连接数据库出现未将对象引用实例

Silverlight 添加到 List<T> 抛出未设置为对象实例的对象引用

Blazor Webassembly:对象引用未设置为对象 i 的实例

对象引用未设置为对象的实例...错误?