Je cherche un moyen d'obtenir le nom de déploiement d'un service de cloud du code C # à l'aide de Comment puis-je faire ça? P> Roleenviroment CODE> classe ou quelque chose de similaire afin que si mon service soit déployé au
MyService.CloudApp.net code> i get
mservice code>. p>
3 Réponses :
Vous devrez utiliser Service Management API REST code>
pour obtenir le nom de service cloud. L'opération est un peu alambiqué un! P>
Here're les étapes que vous devez faire: p>
Liste des services hébergés code> opération
. li>
Get Hosted Service Properties code >
. Assurez-vous également que vous fournissez embed-détail = true code> paramètre de chaîne de requête. li>
- Dans la réponse que vous obtiendrez, vous devez trouver le
PrivateID code> et correspondre avec votre identifiant de déploiement. Li>
ol>
J'ai écrit un dos de billet de blog de longue date qui a un code pour vous permettre de faire quelque chose comme ceci: http://gauravmantri.com/2012/03/16/programmatically-finding-deployment-slot-from-code-running-in-windows -azure / . p>
Signifie que je dois télécharger un certificat le long du déploiement pour obtenir le nom? Je vais y jeter un coup d'oeil.
@ S093294: Oui, et vous devrez écrire du code qui charge ce certificat et effectue des demandes de repos. C'est comme plusieurs dizaines de lignes de code supplémentaires. Je conviens que c'est une overcive.
Gaurav est partiellement correct. Vous devrez utiliser l'API de gestion de service. Soyez prudent avec votre terminologie - Le nom du déploiement est généralement une version générale représentant le déploiement actuel du code de service. Vous recherchez le serveurName. Utilisation de l'API de gestion de services, vous pouvez émettre une demande à Hébergement Propriétés du service code>
. Le serveur de propriétés dans l'objet de réponse est le préfixe DNS que vous recherchez: P>
Le nom du service de cloud. Ce nom est le nom du préfixe DNS et peut être utilisé pour accéder au service de cloud. Par exemple, si le nuage nom de service est myservice que vous pourriez accéder au cloud Service en appelant: http://myservice.cloudapp.net p> blockQuote>
async public Task<List<XDocument>> GetAzureServices() { String uri = String.Format("https://management.core.windows.net /{0}/services/hostedservices ", _subscriptionid); List<XDocument> services = new List<XDocument>(); HttpClient http = GetHttpClient(); Stream responseStream = await http.GetStreamAsync(uri); if (responseStream != null) { XDocument xml = XDocument.Load(responseStream); var svcs = xml.Root.Descendants(ns + "HostedService"); foreach (XElement r in svcs) { XDocument vm = new XDocument(r); services.Add(vm); } } return services; } public HttpClient GetHttpClient() { WebRequestHandler handler = new WebRequestHandler(); string CertThumbprint = _certthumbprint; X509Certificate2 managementCert = FindX509Certificate(CertThumbprint); if (managementCert != null) { handler.ClientCertificates.Add(managementCert); HttpClient httpClient = new HttpClient(handler); httpClient.DefaultRequestHeaders.Add("x-ms-version", "2012-03-01"); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); return httpClient; } return null; } private static X509Certificate2 FindX509Certificate(string thumbprint) { X509Store certificateStore = null; X509Certificate2 certificate = null; try { certificateStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); certificateStore.Open(OpenFlags.ReadOnly); var certificates = certificateStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false); if (certificates.Count > 0) { certificate = certificates[0]; } } finally { if (certificateStore != null) certificateStore.Close(); } return certificate; } you need to specify subcriptionId and certificate thumbprint