0

localhost でホストしている場合、サーバーから AD のリストを取得できるのは奇妙ですが、サーバー 2008 R2 でホストしている場合、エラーが返されます。LinqToLDAP を使用しています。

            var config = new LdapConfiguration();
            config.ConfigureFactory(Server).ProtocolVersion(3);
            config.MaxPageSizeIs(Size);

            using (HostingEnvironment.Impersonate()) //solved issue for firefox and safari
            {
                using (var context = new DirectoryContext(config))
                {
                    context.Log = Console.Out;
                    var user = context.Query<ActiveDirectory>();

                    var result = (from m in user
                                  select m).ToList();
                    return result;
                }
            }

ここに画像の説明を入力

4

2 に答える 2

0

これは私の現在のシステムでうまく機能するコードです。自由に勉強してください

WebConfig

<add key="LdapServer" value="yourADserverName" />
<add key="LdapSize" value="totalpagesziereturn" />
<add key="CreName" value="yourdomainuserid" />
<add key="CrePass" value="yourpassword" />
<add key="CreDomain" value="yourdomain" />

AD.cs

    private int Size = Convert.ToInt32(ConfigurationManager.AppSettings["LdapSize"]);
    private string Server = ConfigurationManager.AppSettings["LdapServer"];
    private NetworkCredential UserCredential = new NetworkCredential(ConfigurationManager.AppSettings["CreName"], ConfigurationManager.AppSettings["CrePass"], ConfigurationManager.AppSettings["CreDomain"]);

    /// <summary>
    /// Get all user from active directory
    /// </summary>
    /// <returns></returns>
    public IEnumerable<ActiveDirectory> GetActiveDirectory()
    {
        var config = new LdapConfiguration();
        config.ConfigureFactory(Server).ProtocolVersion(3).UsePort(389).AuthenticateAs(UserCredential);
        config.MaxPageSizeIs(Size);

        using (HostingEnvironment.Impersonate()) //solved issue for firefox and safari
        {
            using (var context = new DirectoryContext(config))
            {
                context.Log = Console.Out;
                var user = context.Query<ActiveDirectory>();

                var result = (from m in user
                              select m).ToList();
                return result;
            }
        }
    }
于 2014-02-22T00:30:23.023 に答える
0

OK、答えが見つかりました。Google で検索してコードを少しいじった後、機能させるにはネットワーク資格情報を渡す必要があることがわかりました

于 2013-09-03T07:44:17.907 に答える