如何在建立上下文时设置连接超时-PrincipalContext

2024-06-21

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Domain, UserName, Password))
            {
                UserPrincipal U = new UserPrincipal(ctx);
                U.GivenName = strFirstName;
                U.Surname = strLastName;
                U.EmailAddress = strEmail;

                PrincipalSearcher srch = new PrincipalSearcher(U);

                foreach (var principal in srch.FindAll())
                {
                    var p = (UserPrincipal)principal;
                    if (!User.Any(x => x.Email == p.EmailAddress))
                    {
                        MyUserDataset.UserRow User = User.NewUserRow();
                        User.FirstName = p.GivenName;
                        User.LastName = p.Surname;
                        User.UserName = p.SamAccountName;
                        User.Email = p.EmailAddress;
                        User.AddUserRow(User);
                    }
                }
                User.AcceptChanges();
            }

我使用上面的 PrimaryContext 类建立与目标目录的连接,并指定针对该目录执行操作的凭据。

有谁知道我如何在 PrimaryContext 构造函数中指定连接超时?我遇到了连接超时问题,我想知道我是否可以控制连接超时后多长时间。


嗯,不幸的是,我想答案是否定的。我深入研究了PrincipalContext的源代码,它使用DirectoryEntry,它使用不安全的本机方法System.DirectoryServices.Interop.UnsafeNativeMethods.ADsOpenObject来打开LDAP连接。

根据这个博客如何在 .Net 中为 ldap 绑定指定超时 https://web.archive.org/web/20150624074505/http://blogs.msdn.com:80/b/dsadsi/archive/2012/06/06/how-to-specify-timeout-for-ldap-bind-in-net.aspx,无法在 ADsOpenObject 上配置超时。不过,它也提到,如果直接使用LdapConnection,那么可以设置超时。在这种情况下,您可能无法使用PrincipalContext。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在建立上下文时设置连接超时-PrincipalContext 的相关文章

随机推荐