Azure-API Der Server konnte die Anforderung nicht authentifizieren
Ich habe eine Aufgabe (ich habe versucht, mit der Arbeiterrolle eine Konsolenanwendung hochzuladen und die EXE-Datei auszuführen), die einmal täglich ausgeführt werden und Azure-Metriken einiger meiner VMs erfassen soll. Dies funktioniert lokal einwandfrei, aber bei einem Cloud-Dienst erhalte ich den folgenden Fehler:
Nicht behandelte Ausnahme: Microsoft.WindowsAzure.CloudException: ForbiddenError: Der Server konnte die Anforderung nicht authentifizieren. Stellen Sie sicher, dass das Zertifikat gültig und mit diesem Abonnement verknüpft ist. bei Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSucces ... usw.
Die Linie, in der dies geschieht, ist:
MetricDefinitionListResponse metricListResponse = metricsClient.MetricDefinitions.List(resourceId, null,
nspace);
Dies ist ein Teil meines Codes:
string subscriptionId = "fc4xxxx5-835c-xxxx-xxx-xxxxxxx";
// The thumbprint of the certificate.
string thumbprint = "f5 b4 xxxxxxxx f7 c2";
// Get the certificate from the local store.
//X509Certificate2 cert = GetCertificate(StoreName.My, StoreLocation.LocalMachine, thumbprint);
//cert = GetCertificate(StoreName.My, StoreLocation.CurrentUser, thumbprint) ?? new X509Certificate2(("manageAzure.cer"));
var cert = new X509Certificate2(("manageAzure.cer"));
Console.WriteLine("Certificate is : " + cert);
// Create the metrics client.
var metricsClient = new MetricsClient(new CertificateCloudCredentials(subscriptionId, cert));
Console.WriteLine("metricsClient is : " + metricsClient);
// The cloud service name and deployment name, found in the dashboard of the management portal.
string cloudServiceName = "abms2-carlsberg";
string deploymentName = "abms2-carlsberg";
// Build the resource ID string.
string resourceId = ResourceIdBuilder.BuildVirtualMachineResourceId(cloudServiceName, deploymentName);
string nspace = "WindowsAzure.Availability";
// Get the metric definitions.
MetricDefinitionListResponse metricListResponse = metricsClient.MetricDefinitions.List(resourceId, null,
nspace);
Ich habe das Verwaltungszertifikat in meine Lösung eingefügt und lade es von dort (es ist so eingestellt, dass es immer kopiert wird) und es ist das gleiche (und das gleiche Verfahren), das ich verwende, wenn ich es lokal ausführe.
Was für ein "Zertifikat" beklagt es sich über "Authentifizierung"? Ich kann anscheinend nicht erkennen, wo das Problem liegt. Jede Hilfe wäre sehr dankbar, da ich den ganzen Nachmittag dafür gebraucht habe!
PS: Ich führe dies bereits im erhöhten Modus aus!