Member 10271543 Ответов: 3

Отображаемое имя выдает ошибку при публикации на сервере IIS


https://www.codeproject.com/Tips/458039/Application-Login-through-Active-Directory-LDAP
Я попробовал решение по ссылке выше, используя метод проверки, и изменил его, чтобы вернуть только displayname, который вставлен ниже. Он работает локально, но после публикации на сервере IIS выдает ошибку -

"Невозможно привести объект типа System.Каталог.Бухгалтерия.GroupPrincipal to type 'System.Каталог.Бухгалтерия.Метод userprincipal"

Я попытался добавить свои учетные данные домена в функцию олицетворения аутентификации в IIS, но тогда она дает доступ только мне, то же самое, если добавить другого пользователя, она даст доступ только к ним.

NB: веб-сайт должен получить текущее имя пользователя для входа и отображения из windows, а также получить их данные из базы данных. Также пытался включить проверку подлинности windows, но все равно выдает ошибку cast object.

Что я уже пробовал:

публичная статическая строка fnValidateUser()
{
строковое имя пользователя = "";
строку "фамилия" = "";
пробовать
{
LdapConnection lcon = новый LdapConnection
(новый LdapDirectoryIdentifier((string)null, false, false));
NetworkCredential nc = новый NetworkCredential(Environment.имя пользователя,
Окружающая среда.UserDomainName);




Класса Windowsidentity CurrentIdentity = Windowsidentity Могут.GetCurrent();
Метод userprincipal метод userprincipal = метод userprincipal.Тока;
имя пользователя = метод userprincipal.Отображаемое имя;
Фамилия = userPrincipal.фамилия;


// lcon.Учетные данные = nc;
// lcon.Тип = Тип.Переговоры;
// // пользователь прошел аутентификацию на данный момент,
// // поскольку учетные данные были использованы для входа в dc.
// lcon.Персонализация(Северная Каролина);
// проверка = истина;
}
поймать (LdapException)
{

}
вернуть имя пользователя;
}

Member 10271543

Он работает локально, но не после публикации в IIS

3 Ответов

Рейтинг:
1

Member 10271543

It works locally but not after published to IIS


Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" нажмите кнопку под этим решением и оставьте комментарий.

Не опубликуйте свой комментарий как "решение".

Рейтинг:
0

Richard Deeming

Это ошибка в фреймворке, которая все еще влияет на самую последнюю версию. Пул приложений работает как "виртуальная учетная запись"; UserPrincipal.Current возвращает идентификатор группы и неправильно пытается преобразовать его в идентификатор пользователя.

Попробуйте использовать UserPrincipal.FindByIdentity вместо UserPrincipal.Current.

Метод userprincipal.FindByIdentity выбрасывает InvalidCastException · Issue #39852 · dotnet/corefx · GitHub[^]
c# - невозможно привести объект типа в систему.Каталог.Бухгалтерия.GroupPrincipal - Переполнение Стека[^]
Удостоверения Пула Приложений | Microsoft Docs[^]
Метод userprincipal.Метод FindByIdentity (System.Каталог.Коррупция) | Майкрософт Документы[^]