Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ihre Clientanwendung kann eine Verbindung mit mehreren Dataverse-Umgebungen herstellen. Verwenden Sie den globalen Suchdienst, um herauszufinden, auf welche Umgebungen der Benutzer Ihrer Anwendung zugreifen kann.
In Power Apps können Sie aus einer Liste der verfügbaren Umgebungen auswählen. Der globale Suchdienst ist die Quelle dieser Daten. In Ihrer eigenen App können Sie ein Auswahlsteuerelement bereitstellen, mit dem Benutzer auswählen können, welche Umgebung sie verwenden möchten. Ihre Wahl bestimmt, mit welcher Umgebung Ihre App eine Verbindung herstellen muss.
Mit Dataverse können sich die Server- und Organisationszuordnung im Rahmen der Rechenzentrumsverwaltung und des Lastenausgleichs ändern. Daher kann mithilfe des globalen Suchdienstes ermittelt werden, welcher Server zu einer gegebenen Zeit eine Instanz bereitstellt.
Weitere Informationen:
Global Discovery-Dienst
Der Global Discovery-Dienst, manchmal als GDS bezeichnet, ist eine Reihe von OData v4.0-Endpunkten, die für fünf verschiedene Clouds verfügbar sind.
Notiz
Während sowohl die Dataverse-Web-API als auch der Global Discovery-Dienst OData v4.0-Endpunkte sind, sind sie getrennte Endpunkte mit unterschiedlichen Verhaltensweisen.
In der folgenden Tabelle werden die GDS-Standorte für jede Cloud bereitgestellt.
| Cloud | URL und Beschreibung |
|---|---|
| Commercial | https://globaldisco.crm.dynamics.comWird von Unternehmen des privaten Sektors verwendet. Diese Cloud ist die am häufigsten verwendete Cloud. |
| GCC | https://globaldisco.crm9.dynamics.comGovernment Community Cloud. Wird von Mitarbeitern des öffentlichen Sektors und Auftragnehmern in den Vereinigten Staaten verwendet. |
| USG | https://globaldisco.crm.microsoftdynamics.usWird von Mitarbeitern und Auftragnehmern der US-Bundesregierung verwendet. Auch als GCC High bezeichnet. |
| DOD | https://globaldisco.crm.appsplatform.usWird von USA Department of Defense Mitarbeitern und Auftragnehmern verwendet. |
| China | https://globaldisco.crm.dynamics.cnWird von Unternehmen in China verwendet, sodass sie den gesetzlichen Anforderungen entsprechen. |
Weitere Informationen:
Einschränkungen
Der globale Ermittlungsdienst gibt keine Informationen zurück, wenn:
- Das Benutzerkonto ist deaktiviert.
- Eine Instanzsicherheitsgruppe filtert den Benutzer heraus.
- Der Benutzer erhält Zugriff, indem er ein delegierter Administrator ist.
Wenn der aufrufende Benutzer nicht auf Instanzen zugreifen kann, gibt die Antwort eine leere Liste zurück.
Authentifizierung
Der aufrufende Benutzer muss ein OAuth 2.0-Token aus Microsoft Entra ID abrufen und dieses Token im Autorisierungsheader der API-Aufrufe hinzufügen. Weitere Informationen finden Sie unter Verwenden der OAuth-Authentifizierung mit Microsoft Dataverse.
CORS-Support
Der Ermittlungsdienst unterstützt den CORS-Standard für den ursprungsübergreifenden Zugriff. Weitere Informationen zur CORS-Unterstützung finden Sie unter Verwenden von OAuth mit cross-Origin Resource Sharing, um eine Single-Page-Anwendung zu verbinden.
Insomnia für die Herstellung einer Verbindung zum Global Discovery Service verwenden
Verwenden Sie den gleichen Ansatz, der für die Dataverse-Web-API in Verwendung von Schlaflosigkeit mit Dataverse Web-API beschrieben wird. Verwenden Sie anstelle der in diesem Artikel beschriebenen Umgebungsvariablen die folgenden Variablen, um auf die kommerzielle Cloud zuzugreifen.
{
"cloudUrl": "https://globaldisco.crm.dynamics.com",
"globalDiscoUrl": "{{cloudUrl}}/api/discovery/v2.0/",
"redirecturl": "https://localhost",
"authurl": "https://login.microsoftonline.com/common/oauth2/authorize?resource={{cloudUrl}}",
"clientid": "51f81489-12ee-4a9e-aaae-a2591f45987d"
}
Wählen Sie auf der Registerkarte "Autorisierung " OAuth 2 aus, und legen Sie die folgenden Werte fest, oder überprüfen Sie sie:
| Feld | Wert |
|---|---|
| GEWÄHRUNGSTYP | Implicit |
| AUTORISIERUNGS-URL | _.authurl |
| CLIENT-ID | _.clientid |
| UMLEITUNGS-URL | _.redirecturl |
Verwenden Sie GET _.globalDiscoUrl als Anforderungs-URL und wählen Sie Senden.
Sie können den Global Discovery Service jetzt mit Insomnia abfragen.
Servicebelege
Um auf den globalen Ermittlungsdienst für jede Cloud zuzugreifen, fügen Sie die URL an /api/discovery/v2.0/ . Führen Sie eine GET Anforderung für diese URL aus, um das Dienstdokument anzuzeigen, das nur ein einzelnes EntitySet enthält: Instances.
Fügen Sie $metadata an die Cloud-URL and und senden Sie eine GET-Anforderung zum Anzeigen des CSDL-Servicedokuments (Common Schema Definition Language). Dieses XML-Dokument enthält Einzelheiten zur Instance-Entität und die dafür definierten Alternativschlüssel.
Instance-EntitySet
Die folgende Tabelle beschreibt die Eigenschaften der Instance-Entität aus dem $metadata-CDSL-Servicedokument.
| Eigenschaften | Typ | Beschreibung |
|---|---|---|
ApiUrl |
Zeichenfolge | Der Speicherort von Clientanwendungen für Webdienste, die verwendet werden sollten. |
DatacenterId |
Zeichenfolge | Die ID des Rechenzentrums, in dem sich die Instanz befindet. |
DatacenterName |
Zeichenfolge | Der Name des Rechenzentrums, in dem sich die Instanz befindet. Dieser Wert ist normalerweise null. |
EnvironmentId |
Zeichenfolge | Die EnvironmentId für die Instanz. |
FriendlyName |
Zeichenfolge | Ein Name für die Instanz, der in powerapps.com und anderen Clientanwendungen angezeigt wird, die die Auswahl von Instanzen ermöglichen. |
Id |
GUID | Die OrganizationId für die Umgebung. |
IsUserSysAdmin |
Boolesch | Ob der aufrufende Benutzer die Systemadministratorrolle für die Umgebung hat. |
LastUpdated |
DateTimeOffset | Wann die letzte Aktualisierung der Umgebung war. |
OrganizationType |
Int32 | Der Typ der Organisation. Die Werte entsprechen OrganizationType EnumType |
Purpose |
Zeichenfolge | Informationen für den Zweck, die bereitgestellt wurden, als die Umgebung erstellt wurde. |
Region |
Zeichenfolge | Ein aus 2-3 Buchstaben bestehender Code für die Region, in der sich die Umgebung befindet. |
SchemaType |
Zeichenfolge | Nur zur internen Verwendung. |
State |
Int32 | Ob die Organisation 0:enabled (aktiviert) oder 1:disabled (deaktiviert) ist. |
StatusMessage |
Int32 | Einer der folgenden Werte: 0:InstanceLocked1:PendingServiceInstanceMove2:InstanceFailed3:Provisioning 4:InActiveOrganizationStatus5:NewInstance6:InstancePickerReady |
TenantId |
GUID | Die ID des Mandanten, der mit der Instanz verknüpft ist |
TrialExpirationDate |
DateTimeOffset | Das Datum, an dem der Testzeitraum für die Instanz abläuft. |
UniqueName |
Zeichenfolge | Der eindeutige Name für die Instanz. |
UrlName |
Zeichenfolge | Der für die URL verwendete Name. |
Version |
Zeichenfolge | Die aktuelle Version der Umgebung. |
Url |
Zeichenfolge | Die Anwendungs-URL für die Umgebung. |
Sie können diese Eigenschaftsnamen mit dem OData-Abfrageparameter $select verwenden, um nur die Daten abzurufen, die Sie benötigen. In den meisten Fällen benötigen Sie lediglich die Eigenschaften FriendlyName und ApiUrl. Zum Beispiel:
Anforderung:
GET https://globaldisco.crm.dynamics.com/api/discovery/v2.0/Instances?$select=ApiUrl,FriendlyName HTTP/1.1
Authorization: Bearer <truncated for brevity>
Antwort:
HTTP/1.1 200 OK
Content-Length: 625
Content-Type: application/json; odata.metadata=minimal
odata-version: 4.0
{
"@odata.context":"https://10.0.1.76:20193/api/discovery/v2.0/$metadata#Instances(ApiUrl,FriendlyName)",
"value":[
{
"ApiUrl":"https://yourorganization.api.crm.dynamics.com",
"FriendlyName":"Your Organization"
}
]
}
Verwenden Sie die FriendlyName-Eigenschaft für die Benutzeroberfläche Ihrer Anwendung, damit der Benutzer den Namen der Umgebung erkennt. Verwenden Sie ApiUrl, um eine Verbindung mit Dataverse herzustellen.
Die restlichen Eigenschaften dienen hauptsächlich zum Filtern.
Filterung
Sie können die zurückgegebenen Instanzen auf zwei Arten filtern:
- Verwenden von Schlüsselwerten
- Mit OData-
$filter-Abfrageoptionen
Verwenden von Schlüsselwerten
Verwenden Sie den Id Wert, UniqueName um die Liste zu filtern und nur die angegebene Instanz zurückzugeben.
Notiz
Im Gegensatz zur Dataverse-Web-API unterstützt der globale Discoverydienst das Abrufen eines bestimmten Instance unter Verwendung von Id oder eines der dafür definierten alternativen Schlüssel nicht. GDS gibt immer ein Array von Werten zurück.
Beide der folgenden Abfragen geben ein Array mit einem einzelnen Element zurück:
GET https://globaldisco.crm.dynamics.com/Instances(6bcbf6bf-1f2a-4ab9-9901-2605b314d72d)?$select=ApiUrl,FriendlyName,Id,UniqueName
GET https://globaldisco.crm.dynamics.com/Instances(UniqueName='unq6bcbf6bf1f2a4ab999012605b314d')?$select=ApiUrl,FriendlyName,Id,UniqueName
Sie können auch eine der folgenden alternativen Schlüsselwerte verwenden, um nach bestimmten Werten zu filtern: Region, , . StateVersion Verwenden Sie beispielsweise die folgende Abfrage, um nur die Instanzen zurückzugeben, in denen die Region NA Nordamerika darstellt.
GET https://globaldisco.crm.dynamics.com/Instances(Region='NA')?$select=FriendlyName,Region,State,Version,ApiUrl
OData-$filter-Abfrageoptionen verwenden
Sie können OData-$filterAbfrageoptionen mit allen zutreffenden Eigenschaften verwenden, einschließlich der Eigenschaften des alternativen Schlüssels.
Sie können die folgenden Vergleichs-, logischen und Gruppierungsoperatoren verwenden:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| Vergleichsoperatoren | ||
eq |
Equal | $filter=IsUserSysAdmin eq true |
ne |
Ungleich | $filter=IsUserSysAdmin ne true |
gt |
Größer als | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z |
ge |
Größer als oder gleich | $filter=TrialExpirationDate ge 2022-07-14T00:00:00Z |
lt |
Kleiner als | $filter=TrialExpirationDate lt 2022-07-14T00:00:00Z |
le |
Kleiner oder gleich | $filter=TrialExpirationDate le 2022-07-14T00:00:00Z |
| Logische Operatoren | ||
and |
Logisch und | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z and IsUserSysAdmin eq true |
or |
Logisch oder | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z or IsUserSysAdmin eq true |
not |
Logische Negation | $filter=not contains(Purpose,'test') |
| Gruppierungsoperatoren | ||
( ) |
Rangfolgengruppierung | (contains(Purpose,'sample') or contains(Purpose,'test')) and TrialExpirationDate gt 2022-07-14T00:00:00Z |
Sie können die folgenden Zeichenfolgen-Abfragefunktionen verwenden:
| Function | Beispiel |
|---|---|
contains |
$filter=contains(Purpose,'test') |
endswith |
$filter=endswith(FriendlyName,'Inc.') |
startswith |
$filter=startswith(FriendlyName,'A') |
Notiz
Im Gegensatz zur Dataverse-Web-API wird bei Suchzeichenfolgen für den globalen Suchdienst zwischen Groß- und Kleinschreibung unterschieden.
Dataverse ServiceClient verwenden
Verwenden Sie für .NET Anwendungen Dataverse.Client.ServiceClient.DiscoverOnlineOrganizationsAsync-Methode zum Aufrufen der Global Discovery Services.
// Set up user credentials
var creds = new System.ServiceModel.Description.ClientCredentials();
creds.UserName.UserName = userName;
creds.UserName.Password = password;
//Call DiscoverOnlineOrganizationsAsync
DiscoverOrganizationsResult organizationsResult = await ServiceClient.DiscoverOnlineOrganizationsAsync(
discoveryServiceUri: new Uri($"{cloudRegionUrl}/api/discovery/v2.0/Instances"),
clientCredentials: creds,
clientId: clientId,
redirectUri: new Uri(redirectUrl),
isOnPrem: false,
authority: "https://login.microsoftonline.com/organizations/",
promptBehavior: PromptBehavior.Auto);
return organizationsResult;
Während die DiscoverOnlineOrganizationsAsync Methode denselben OData-Endpunkt verwendet und ermöglicht, dass sie im discoveryServiceUri Parameter übergeben wird, werden keine Daten im Shape einer Instanz zurückgegeben. Sie gibt Daten als DiscoverOrganizationsResult-Klasse zurück, die eine OrganizationDetailCollection-Eigenschaft enthält, die eine Auflistung von OrganizationDetail-Klasseninstanzen enthält. Diese Klasse enthält die gleichen Informationen wie die Instance-Typen, die vom OData-Service zurückgegeben werden.
Notiz
Während der DiscoverOnlineOrganizationsAsync.discoveryServiceUri Parameter eine URL zum Global Discovery Service akzeptiert, ignoriert die Methode beliebige $select Oder $filter Abfrageoptionen. Der DiscoverOnlineOrganizationsAsync.discoveryServiceUri Parameter ist optional. Wenn Sie sie nicht bereitstellen, wird die Methode standardmäßig in der kommerziellen Cloud verwendet.
CrmServiceClient verwenden
Verwenden Sie für .NET Framework-Anwendungen weiterhin die CrmServiceClient.DiscoverGlobalOrganizations-Methode, um den Global Discovery Service aufzurufen.
// Set up user credentials
var creds = new System.ServiceModel.Description.ClientCredentials();
creds.UserName.UserName = userName;
creds.UserName.Password = password;
// Call to get organizations from global discovery
var organizations = CrmServiceClient.DiscoverGlobalOrganizations(
discoveryServiceUri:new Uri($"{cloudRegionUrl}/api/discovery/v2.0/Instances"),
clientCredentials: creds,
user: null,
clientId: clientId,
redirectUri: new Uri(redirectUrl),
tokenCachePath: "",
isOnPrem: false,
authority: string.Empty,
promptBehavior: PromptBehavior.Auto);
return organizations.ToList();
Wie bei der ServiceClient.DiscoverOnlineOrganizationsAsync Methode gibt die CrmServiceClient.DiscoverGlobalOrganizations Methode auch keine Daten als Instanz zurück. Sie gibt eine OrganizationDetailCollection zurück, die eine Auflistung von OrganizationDetail-Klasseninstanzen enthält. Diese Sammlung enthält dieselben Informationen wie die Typen, die vom OData-Dienst zurückgegeben werden Instance.
Siehe auch
Beispiel: Beispiel für globalen Suchdienst (C#)
Beispiel: Zugreifen auf den Suchdienst mit CrmServiceClient
Beispiel: Blazor WebAssembly mit globaler Suche