2017-11-02 3 views
0

Ich versuche, meine Azure Scheduler über meine .NET-Anwendung verbinden jedoch auf dem aktuellen Stand I KeyNotFoundException: The given key was not present in the dictionary. immer binWie Azure Scheduler programmatisch verbinden .NET

ich in https://github.com/Azure-Samples/scheduler-dotnet-getting-started/tree/master/SchedulerArmSDKTemplate

zum Beispiel versucht haben,

Das Problem mit dem obigen Beispiel ist, ich denke, es basiert auf früheren Version der Pakete. Also habe ich bei der letzten Version versucht, es alleine zu machen, aber das konnte ich nicht. Die Menge an Dokumentation rund um diese und AD Connect ist wirklich begrenzt, besonders wenn es um neue Portal und neueste Versionen geht. Mein Codebeispiel ist unten, ich bin nicht sicher, was ich an dieser Stelle falsch zu machen:

var tenantId = "{tenantId}"; // I have put objectId from Azure AD Properties 
var clientId = "{clientId}"; // Here, I have created new App Registration in Azure AD and copied the AppId value 
var subscriptionId = "{subscriptionId}"; //Subscription Id of the scheduler resource 

UserLoginInformation loginInformation = new UserLoginInformation() 
{ 
    ClientId = clientId 
}; 
ServiceClientCredentials serviceClientCredentials = new AzureCredentials(loginInformation, tenantId, AzureEnvironment.AzureGlobalCloud); 

SchedulerManagementClient schedulerManagementClient = 
      new SchedulerManagementClient(serviceClientCredentials) { SubscriptionId = subscriptionId }; 

var schedulers = await schedulerManagementClient.JobCollections.GetWithHttpMessagesAsync("{resourceGroup}", "{jobCollectionName}"); 

Antwort

0

Tennat Id ist nicht die Anwendung objectid. Wir könnten es vom Azure-Portal erhalten, mehr Details finden Sie im Screenshot.

enter image description here

Wenn der Benutzer nicht multifaktorielle Authentifizierung erforderlich ist. Bitte versuchen Sie den folgenden Code zu verwenden.

var tenantId = "tenantId"; // Not the object id, it is Azure directory Id 
var clientId = "client Id"; // Here, I have created new App Registration in Azure AD and copied the AppId value 
var subscriptionId = "subscription Id"; //Subscription Id of the scheduler resource 
var resourceGroup = "resource group"; 
var jobCollectionName = "job name"; 
UserLoginInformation loginInformation = new UserLoginInformation() 
{ 
     ClientId = clientId, 
     UserName = "[email protected]", 
     Password = "xxxxxx" 
}; 
ServiceClientCredentials serviceClientCredentials = new AzureCredentials(loginInformation, tenantId, AzureEnvironment.AzureGlobalCloud); 

SchedulerManagementClient schedulerManagementClient = 
       new SchedulerManagementClient(serviceClientCredentials) { SubscriptionId = subscriptionId }; 

var schedulers = await schedulerManagementClient.JobCollections.GetWithHttpMessagesAsync($"{resourceGroup}", $"{jobCollectionName}"); 
+0

Ich meinte die DirectoryId objectId von AD und nicht für die Anwendung kaufen. Entschuldigung, ich war nicht klar. – erincerol

+0

Entsprechend der Fehlerinfo erwähnten Sie 'KeyNotFoundException: Der gegebene Schlüssel war nicht im Wörterbuch anwesend. 'Ich nehme an, dass nicht mit Ihnen erwähntem Code verbunden ist. Versuchen Sie bitte, ein neues C# -Konsolenprojekt mit dem genannten Code zu erstellen und erneut zu testen. Ich registriere eine native Azure AD-Anwendung, es funktioniert auf meiner Seite. –

+0

Ich habe versucht, sowohl native und Web/API-Anwendung, aber immer noch den gleichen Fehler. Auch versucht, Benutzername und Passwort meines Benutzers in der Azur, die in der Rolle des Besitzers ist, immer noch kein Glück – erincerol