1

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();
    }
4

1 に答える 1

1

この質問に自分で答えます。私は最終的に、Azman がファイルベースであっても高速化するためには、Azman へのハンドルをキャッシュすることが必要であることがわかりました。これを実現するために、以下のようなプロパティをカスタム AzmanProvider に追加しました。そして、これにより、役割の割り当て時間が2秒に短縮されました!!

    public AzAuthorizationStoreClass AZManStore
    {
        get
        {
            if (_azManStore == null)
            {                    
                _azManStore = new AzAuthorizationStoreClass();
                _azManStore.Initialize(0, this.ConnectionStringName, null);
            }
            return _azManStore;
        }
    }
于 2012-02-16T17:04:25.703 に答える