Получить полное имя пользователя из активного каталога в веб-приложении asp.net - PullRequest
1 голос
/ 28 ноября 2010

Я пытаюсь получить полное имя данного пользователя из активного каталога. Этот код работает на моем ПК, но когда я помещаю его на сервер, он выдает исключение:

Сетевой путь не найден.

Код:

DirectoryEntry obDirEntry = null;
        try
        {
            obDirEntry = new DirectoryEntry("WinNT://" + "domain" + "/" + Environment.UserName);
            System.DirectoryServices.PropertyCollection coll = obDirEntry.Properties;
            object obVal = coll["FullName"].Value;
            Response.Write(obVal);
        }
        catch (Exception ex)

        {
           Response.Write(ex.Message);
        }

Есть идеи, как это исправить, чтобы это работало и на сервере? Или, может быть, каким-то другим способом я могу получить полное имя данного имени пользователя? Нужно ли мне как-то использовать LDAP?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Здесь может быть много проблем, вот что я обнаружил

  1. Ваш новый объект Каталога указывает на WINNT. Я думаю, вам нужно использовать адрес LDAP для этого, т.е.

    new DirectoryEntry("LDAP://" + sADServer + "/" + sNewOUPath, sADUser, sADPassword, AuthenticationTypes.Secure);

  2. В вашем веб-сервере необходимо изменить пользователя в пуле приложений, и этот пользователь должен иметь соответствующие права на AD

  3. Вы также можете отредактировать свой web.config для выполнения <identity impersonate="true" /> и убедиться, что тот, который запускает страницу на веб-сервере, имеет соответствующие разрешения для AD

ссылка на полную реализацию AD относится к этому http://anyrest.wordpress.com/2010/02/01/active-directory-objects-and-c/

0 голосов
/ 15 марта 2013

Я тоже столкнулся с этой проблемой и нашел другое решение. В моем случае я просто добавил постфикс «.local» после имени домена. То есть Я сделал что-то вроде этого:

DirEntry = new DirectoryEntry("WinNT://" + "domain.local" + "/" + Environment.UserName);

БР, Владимир

...