コード例 #1
0
        private MailboxDatabase GetExecutingUserDatabase(ITopologyConfigurationSession topologyConfigSession)
        {
            this.WriteDebugInfo("Executing user:{0}", new object[]
            {
                this.ExecutingUser
            });
            ADObjectId        databaseId      = null;
            ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.CurrentOrganizationId.OrganizationalUnit, base.CurrentOrganizationId, base.CurrentOrganizationId, true);
            IRecipientSession session         = DirectorySessionFactory.Default.CreateTenantRecipientSession(true, ConsistencyMode.PartiallyConsistent, sessionSettings, 1098, "GetExecutingUserDatabase", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\RecipientTasks\\GroupMailbox\\NewGroupMailbox.cs");
            Exception         ex = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate
            {
                ADUser aduser = (ADUser)this.GetDataObject <ADUser>(this.ExecutingUser, session, this.CurrentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound(this.ExecutingUser.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(this.ExecutingUser.ToString())), ExchangeErrorCategory.Client);
                databaseId    = aduser.Database;
                this.WriteDebugInfo("Located local database for the executing user:{0}", new object[]
                {
                    databaseId
                });
            });

            if (ex != null)
            {
                this.WriteDebugInfo("Unable to find database belonging to the executing user because:{0}", new object[]
                {
                    ex
                });
            }
            if (databaseId != null)
            {
                return(topologyConfigSession.Read <MailboxDatabase>(databaseId));
            }
            return(null);
        }
コード例 #2
0
        internal ADGroup ResolveGroup(RecipientIdParameter id, out Exception exception)
        {
            if (id == null)
            {
                throw new ArgumentNullException("id");
            }
            ADGroup group = null;

            exception = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate
            {
                group = (ADGroup)this.getGroupDataObject(id, this.adSession, this.currentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound((string)id)), new LocalizedString?(Strings.ErrorRecipientNotUnique((string)id)), ExchangeErrorCategory.Client);
            });
            return(group);
        }
コード例 #3
0
        internal ADUser ResolveUser(RecipientIdParameter id, out Exception exception)
        {
            this.AddVerboseLog("Start: ResolveUser");
            if (id == null)
            {
                throw new ArgumentNullException("id");
            }
            ADUser user;

            if (this.resolveUserCache.TryGetValue(id.RawIdentity, out user))
            {
                exception = null;
                return(user);
            }
            exception = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate
            {
                user = (ADUser)this.getUserDataObject(id, this.adSession, this.currentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound((string)id)), new LocalizedString?(Strings.ErrorRecipientNotUnique((string)id)), ExchangeErrorCategory.Client);
            });
            Guid guid;

            if (exception is ManagementObjectNotFoundException && Guid.TryParse(id.RawIdentity, out guid))
            {
                GroupMailboxContext.ExecuteADOperationAndHandleException(delegate
                {
                    user = this.adSession.FindADUserByExternalDirectoryObjectId(id.RawIdentity);
                });
                if (user != null)
                {
                    exception = null;
                }
            }
            if (exception == null && user != null)
            {
                this.resolveUserCache.Add(id.RawIdentity, user);
            }
            this.AddVerboseLog("End: ResolveUser");
            return(user);
        }