Ich muss programmgesteuert die aktuelle Region finden (z. B. "West US" oder "East US"), wo meine aktuelle Rolle ausgeführt wird. Gibt es eine API, um das zu finden?Wie programmatisch kennen Sie die aktuelle Region in einer azurblauen Rolle?
Antwort
Sie können diese Informationen nur erhalten, wenn Sie die Management API verwenden.
Entweder von REST oder Sie können die C# Windows Azure-Verwaltungsbibliotheken (Prerelease on nuget) verwenden.
Beachten Sie jedoch, dass Sie Verwaltungszertifikate einrichten müssen, um die Informationen zu erhalten.
Eine einfachere Alternative besteht darin, eine Einstellung in Ihrem Cloud-Dienst zu erstellen und die Werte beim Erstellen der Bereitstellungskonfiguration festzulegen. Ich tue dies und habe Bereitstellungskonfigurationen für die Regionen, die ich anvisiere.
using(var azure = CloudContext.Clients.CreateComputeManagementClient(...))
{
var service = await azure.HostedServices.GetDetailedAsync("servicename");
// service.Properties.Location
// service.Properties.AffinityGroup;
}
using(var azure = CloudContext.Clients.CreateManagementClient(...))
{
var affinityGroup = await azure.AffinityGroups.GetAsync("name",new CancellationToken());
// affinityGroup.Location
}
Hier ... ist die Anmeldeinformationen, entweder ein Management-Zertifikat oder Ihre WAAD oauth Token. (ADAL: Active Directory-Authentifizierungsbibliothek) kann für Tokens verwendet werden.
hier ist der Code für die Anmeldeinformationen von einem Zertifikat erhalten:
public static CertificateCloudCredentials GetCertificateCloudCredentials(
string certificateThumbprint, string subscriptionId)
{
var certificate = CertificateHelper.LoadCertificate(
StoreName.My,
StoreLocation.LocalMachine,
certificateThumbprint);
if (certificate == null)
throw new Exception(
string.Format("Certificate with thumbprint '{0}' not found",
certificateThumbprint));
var cred = new CertificateCloudCredentials(
subscriptionId,
certificate
);
return cred;
}
Es wäre viel hilfreicher, den tatsächlichen API-Aufruf zu veranschaulichen, der diese Funktionalität bereitstellt (dasselbe gilt für die C# -Methode). –
Es hängt davon ab, welche Route genommen wird. Ich kann den C# -Code für C# Management-Bibliotheken in ein paar Stunden geben. –
Betrachten Get Cloud Service in dem Service-Management-API. Wenn Sie den Service bereitstellen, zu dem Ihre Rollen gehören, können Sie eine ähnliche Antwort wie die folgende abrufen. Beachten Sie das Standortfeld, das ich markiert habe.
<?xml version="1.0" encoding="utf-8"?>
<HostedService xmlns="http://schemas.microsoft.com/windowsazure">
<Url>hosted-service-url</Url>
<ServiceName>hosted-service-name</ServiceName>
<HostedServiceProperties>
<Description>description</Description>
<AffinityGroup>name-of-affinity-group</AffinityGroup>
**<Location>location-of-service</Location >**
<Label>base-64-encoded-name-of-service</Label>
<Status>current-status-of-service</Status>
<DateCreated>creation-date-of-service</DateCreated>
<DateLastModified>last-modification-date-of-service</DateLastModified>
<ExtendedProperties>
<ExtendedProperty>
<Name>name-of-property</Name>
<Value>value-of-property</Value>
</ExtendedProperty>
</ExtendedProperties>
<GuestAgentType>type-of-guest-agent</GuestAgentType>
</HostedServiceProperties>
<DefaultWinRmCertificateThumbprint>thumbprint-of-winrm-certificate</DefaultWinRmCertificateThumbprint>
</HostedService>
Hinzufügen zu @ GregD's Antwort: Bitte beachten Sie, dass das Standortfeld nicht zurückgegeben wird, wenn Ihr Cloud-Service Teil einer Affinitätsgruppe ist. In diesem Fall müssen Sie die Eigenschaften einer Affinitätsgruppe abrufen und den Speicherort dieser Affinitätsgruppe ermitteln. Das wäre auch der Standort des Cloud-Dienstes. –
http://msdn.microsoft.com/en-us/library/windowsazure/ee460789.aspx << Eigenschaften der Affinitätsgruppe api. –
Dies sind die gleichen Informationen, die Sie von den C# -Managment-Bibliotheken erhalten. Bei der Implementierung haben wir alle unsere Affinitätsgruppen mit -weu -wus -sea für Westeuropa verbunden und es ist dann leicht zu erkennen, wo sich Affinitätsgruppen befinden. Nochmal. Es ist einfach, die Metadaten in die Deployment-Datei als eine Einstellung zu setzen und spart viel Zeit, um die Informationen von Management API zu bekommen. –
- 1. Wie Sie die aktuelle Seite in Android WebView kennen
- 2. Holen Sie sich aktuelle Seite programmatisch
- 3. Wie bekomme ich die Region (Auswahl) programmatisch in Emacs Lisp?
- 4. Windows azurblauen Web-Rolle auf lokalen IIS
- 5. Holen Sie sich die aktuelle Region von Windows Phone 8.1
- 6. Wie programmatisch erhalten Sie die aktuelle Datenbank Mongoid schreibt?
- 7. Programmatisch finden Sie die aktuelle Version von R
- 8. programmatisch DatumPicker Zeit auf die aktuelle Zeit
- 9. Eine Komponente innerhalb einer Border-Layout-Region programmatisch ausblenden
- 10. JSON.stringify() - wie aktuelle Tiefe in Ersetzer zu kennen ist
- 11. Wie bekomme ich die Zeilenanzahl von einer azurblauen Datenbank?
- 12. Anmelden azurblauen Cloud-Service
- 13. Wie programmiere ich programmatisch auf die aktuelle Webdriver-Instanz?
- 14. ansible: Rolle in einer Rolle einschließen?
- 15. ViewPager set aktuelle Seite programmatisch
- 16. die Position einer programmatisch
- 17. So erhalten Sie die Einstellung für die MS Band-Region
- 18. Wie ändern Sie ein Hash-Passwort mit asp.net-Mitgliedschaftsanbieter, wenn Sie das aktuelle Passwort nicht kennen?
- 19. Wie Sie die Informationen über Bilder in wpf kennen Anwendung
- 20. So überprüfen Sie die Berechtigungen einer ASP.NET-Rolle
- 21. Facebook: Leute, die Sie vielleicht kennen
- 22. So schalten Sie Buchstaben in einer Region in Emacs um
- 23. die Region Stellen Sie die Amazon SQS in C#
- 24. Ändern Sie die aktuelle Farbe in einer RichTextBox?
- 25. Auswahl einer Region OpenCV
- 26. Erhalten Sie die Kategorie einer beliebigen App in Android programmatisch?
- 27. Kennen Sie einen Webseitenerscheinungsvergleicher?
- 28. Fügen Sie einer azurblauen Website viele Domains hinzu
- 29. Wie kann ich die aktivierten Funktionen einer Matplotlib-Installation kennen?
- 30. Ablauf einer Rolle Symfony
Müssen Sie es von der Rolle oder von draußen finden? –
Gaurav, sagst du, dass du es ohne die Management API aus der Rolle selbst finden kannst :)? –
@pksorensen Sie müssten immer noch die Management-API verwenden, aber da müssten Sie auf den Boden gehen. Wenn der Code in der Rolle ausgeführt wird, verfügen Sie über eine Implementierungs-ID. Sie würden dann alle Cloud-Dienste durchlaufen, um die entsprechende Bereitstellungs-ID zu finden, und dann die Eigenschaften des Cloud-Dienstes abrufen, wie Sie in Ihrer Antwort unten erwähnt haben. –