グローバル検索サービスのサンプル (C#)

注意

エンティティとテーブルの違いがわかりませんか? Microsoft Dataverse で「開発者: 用語を理解する」を参照してください。

このサンプルは、Web API を使用してグローバル探索サービスにアクセスする方法を示しています。

このサンプルを実行する方法

サンプル ソース コードは、Github のPowerApps - サンプル/cds/webapi/C#/GlobalDiscovery で入手できます。

サンプルを実行するには:

  1. サンプルをダウンロードまたは複製して、ローカル コピーを用意します。
  2. Visual Studio でプロジェクト ソリューション ファイルを開きます。
  3. F5 キーを押して、サンプルをビルドして実行します。

このサンプルの概要

サンプルを実行すると、ログオンフォームが開きます。ここで、有効なユーザーの Microsoft Dataverse 資格情報を指定する必要があります。 次に、プログラムはコンソール ウィンドウに、指定されたユーザーがメンバーである Dataverse 環境インスタンスのリストを表示します。

このサンプルの他の重要な側面は次のとおりです。

  1. Azure Active Directory 認証ライブラリ (ADAL) のさまざまなバージョンの API の重大な変更を処理します
  2. 認証コードを含むすべての必要なコードが提供されるため、ヘルパー コードまたはヘルパー ライブラリへの依存関係はありません。

このサンプルがどのように動作するか

このサンプルでは、HttpClient を使用して ADAL により指定されたユーザーを認証し、グローバル探索サービスを呼び出して、Dataverse ユーザーがメンバーになっている環境インスタンスに関して利用可能な情報を返します。

説明

サンプルは、次のように GetInstances メソッドおよび Instance クラスに依存しています。

/// <summary>
/// Uses the global discovery service to return environment instances
/// </summary>
/// <param name="username">The user name</param>
/// <param name="password">The password</param>
/// <returns>A list of Instances</returns>
static List<Instance> GetInstances(string username, string password)
{

    string GlobalDiscoUrl = "https://globaldisco.crm.dynamics.com/";
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = 
        new AuthenticationHeaderValue("Bearer", GetAccessToken(username, password, 
        new Uri("https://disco.crm.dynamics.com/api/discovery/")));
    client.Timeout = new TimeSpan(0, 2, 0);
    client.BaseAddress = new Uri(GlobalDiscoUrl);

    HttpResponseMessage response = 
        client.GetAsync("api/discovery/v2.0/Instances", HttpCompletionOption.ResponseHeadersRead).Result;

    if (response.IsSuccessStatusCode)
    {
        //Get the response content and parse it.
        string result = response.Content.ReadAsStringAsync().Result;
        JObject body = JObject.Parse(result);
        JArray values = (JArray)body.GetValue("value");

        if (!values.HasValues)
        {
            return new List<Instance>();
        }

        return JsonConvert.DeserializeObject<List<Instance>>(values.ToString());
    }
    else
    {
        throw new Exception(response.ReasonPhrase);
    }
}
/// <summary>
  /// Object returned from the Discovery Service.
  /// </summary>
  class Instance
  {
    public string Id { get; set; }
    public string UniqueName { get; set; }
    public string UrlName { get; set; }
    public string FriendlyName { get; set; }
    public int State { get; set; }
    public string Version { get; set; }
    public string Url { get; set; }
    public string ApiUrl { get; set; }
    public DateTime LastUpdated { get; set; }
  }

関連項目

組織の URL を見つける

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。