0

asp.net MVC 4 プロジェクトを開発しました。現在、Azure Graph API にアクセスして AD ユーザー データを取得することを計画しています (ユーザーのナビゲーション プロパティへのアクセス、参照リンク: Azure Rest API リファレンス)。

Azure AD Graph helper Library を確認しましたが、これを使用して Navigation プロパティにアクセスできません (つまり、User の manager プロパティにアクセスします)。

どんな助けでも大歓迎です。

4

2 に答える 2

1

デフォルトでは、何らかのエンティティ (この場合は「ユーザー」) を取得するときに、すべてのナビゲーション プロパティが読み込まれるわけではありません。Expand(..) を使用する必要があります。以下に、Manager を User に割り当てる方法と、User の Manager ナビゲーション プロパティを取得する方法の例を示します (一部のインフラストラクチャのニュアンスは省略されています)。

public async Task<Result> AssingUserManager(string userUpn, string managerUpn)
{
    try
    {
        var user = (AD.User)await ADClient.Users
            .Where(x => x.UserPrincipalName == userUpn)
            .ExecuteSingleAsync();

        var manager = (AD.User)await ADClient.Users
            .Where(x => x.UserPrincipalName == managerUpn)
            .ExecuteSingleAsync();

        user.Manager = manager;

        await manager.UpdateAsync();
        return Result.Ok();
    }
    catch (Exception ex)
    {
        return Result.Fail(new Error("Failed to assign manager", null, ex));
    }
}

public async Task<Result<User>> GetUserManager(string upn)
{
    try
    {
        var user = (AD.User)await ADClient.Users
                    .Where(x => x.UserPrincipalName == upn)
                    .Expand(x => x.Manager)
                    .ExecuteSingleAsync();

        var manager = user.Manager as AD.User;
        if (manager != null)
        {
            return Result.Ok(ConvertToModel(manager));
        }

        return Result.Fail<User>(new Error("Manager not found for specified user", null));
    }
    catch (Exception ex)
    {
        return Result.Fail<User>(new Error("Failed to get user's manager", null, ex));
    }
}

また、グラフを更新するときは、 Manager プロパティが設定されているユーザーではなく、マネージャーとして割り当てられているユーザーで UpdateAsync を呼び出して更新することに注意してください (このソースから取得)

于 2015-11-20T13:37:24.040 に答える
0

HttpClient またはその他の一般的な http 要求生成クラスを介して、Graph を直接ヒットすることが簡単にできます。特定のエンティティにアクセスするための OData 規則に固執し、結果をフィルタリングする必要があるだけです。いくつかの一般的なクエリについては、グラフ ライブラリなしで直接試すことができますhttp://msdn.microsoft.com/en-us/library/azure/jj126255.aspxをご覧ください。

于 2014-06-24T06:08:31.237 に答える