При попытке получить группы авторизации произошла ошибка (5) - PullRequest
13 голосов
/ 28 апреля 2011

Эта ошибка возникает, если я запускаю приложение на сервере, но не локально.Почему это происходит на сервере, а не локально ???

List<GroupPrincipal> result = new List<GroupPrincipal>();

// establish domain context
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);

// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);

// if found - grab its groups
if (user != null)
{
//here happens the error on server.
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();

Пожалуйста, помогите мне.

трассировка стека:

   [PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
   System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317263
   System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11
   IntegrationApp.App_Code.ActiveDir.GetGroups(String userName) in C:\Documents and Settings\mta\My Documents\IntegrationApp\IntegrationApp\App_Code\3-Tier\DAL\ActiveDir.cs:54
   IntegrationApp.App_Code._3_Tier.BAL.DatabaseBAL.BepaalDefaultNiveau2(String melder) in C:\Documents and Settings\mta\My Documents\IntegrationApp\IntegrationApp\App_Code\3-Tier\BAL\DatabaseBAL.cs:75
   IntegrationApp.Detailscherm.VulLijsten() in C:\Documents and Settings\mta\My Documents\IntegrationApp\IntegrationApp\Detailscherm.aspx.cs:89
   IntegrationApp.Detailscherm.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\mta\My Documents\IntegrationApp\IntegrationApp\Detailscherm.aspx.cs:30
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

Ответы [ 4 ]

10 голосов
/ 02 мая 2011

Я нашел другое решение для доступа к ГРУППам:

PrincipalSearchResult<Principal> groups = user.GetGroups();
3 голосов
/ 30 августа 2012

Я обнаружил, что для выполнения GetAuthorizationGroups требуется членство в группе доступа авторизации Windows.

См. Следующую статью: http://support.microsoft.com/kb/331951

3 голосов
/ 28 апреля 2011

Под каким удостоверением работает ваш процесс на сервере? Скорее всего, у этого пользователя нет необходимых прав на доступ к вашей Active Directory.

Можете ли вы проверить, работает ли он с этим конструктором PrincipalContext?

PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, "MY.DOMAIN.HERE", "USERNAME", "PASSWORD");

Если это работает, вы, вероятно, захотите создать выделенного пользователя домена для своего приложения для запуска.

2 голосов
/ 28 апреля 2011

Просто предположение, но это звучит как проблема с уровнями доверия. Посмотрите, поможет ли содержащаяся здесь информация:

Вы используете его как администратор на своем компьютере и более ограниченную учетную запись на сервере?

Если это так, я бы попробовал запустить его с полным доверием на сервере (если вы можете), чтобы посмотреть, исчезнет ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...