通过IAzApplication循环IAzRoles收集太慢



我有这个简单的代码,通过Azman和他们的所有角色的所有应用程序循环。当我没有将用户分配给角色时,它工作得很好。但是当我分配用户时(其中2个角色有7000个用户),应用程序挂在foreach(IAzRole in _azApp.Roles)代码中…基本上在你访问角色集合的那一刻,它就挂起了,大约需要40分钟才能出来。这是完全不能接受的。谁能给我指出解决办法吗?我想要的只是角色分配名字的列表,为什么角色分配会拖慢进度…?

PS:我所有的用户都在ADAM, Azman商店也在ADAM。我也试过通过IAzTasks (roledefinition=1)循环,但这也很慢。

    public override string[] GetAllRoles()
    {
        List<string> rolesList = new List<string>();
        foreach (IAzApplication2 _azApp in AZManStore.Applications)
        {
            foreach (IAzRole role in _azApp.Roles)
            {
                //Weird that Roles are retrieved using tasks collection
                if (!rolesList.Exists(delegate(string x) { return x == role.Name; }))
                    rolesList.Add(role.Name);
            }
        }
        return rolesList.ToArray();
    }

我自己回答这个问题。我终于发现,缓存句柄Azman是什么需要使它快速,即使当Azman是基于文件的。我在我的自定义AzmanProvider中添加了如下属性来完成此操作。这将角色分配时间缩短到2秒!!

    public AzAuthorizationStoreClass AZManStore
    {
        get
        {
            if (_azManStore == null)
            {                    
                _azManStore = new AzAuthorizationStoreClass();
                _azManStore.Initialize(0, this.ConnectionStringName, null);
            }
            return _azManStore;
        }
    }

相关内容

  • 没有找到相关文章

最新更新