내 서비스가 myservice.cloudapp.net
에 배치 된 경우 myservice
이 나올 수 있도록 RoleEnviroment
클래스 또는 비슷한 것을 사용하여 C# 코드에서 클라우드 서비스의 배치 이름을 얻는 방법을 찾고 있습니다.Azure Cloud Service의 코드에서 서비스 이름을 가져 오는 방법은 무엇입니까?
어떻게하면됩니까?
내 서비스가 myservice.cloudapp.net
에 배치 된 경우 myservice
이 나올 수 있도록 RoleEnviroment
클래스 또는 비슷한 것을 사용하여 C# 코드에서 클라우드 서비스의 배치 이름을 얻는 방법을 찾고 있습니다.Azure Cloud Service의 코드에서 서비스 이름을 가져 오는 방법은 무엇입니까?
어떻게하면됩니까?
클라우드 서비스 이름을 얻으려면 Service Management REST API
을 사용해야합니다. 작업은 조금 복잡합니다!
바로 여기에 당신이해야 할 단계 :
List Hosted Services
작업을 수행해야합니다.Get Hosted Service Properties
을 수행해야합니다. 또한 embed-detail=true
검색어 문자열 매개 변수를 입력해야합니다.PrivateID
속성을 찾아 배포 ID와 일치시켜야합니다.블로그 게시물을 작성하여 다음과 같은 코드를 제공합니다. http://gauravmantri.com/2012/03/16/programmatically-finding-deployment-slot-from-code-running-in-windows-azure/.
Gaurav는 부분적으로 정확합니다. 서비스 관리 API를 사용해야합니다. 용어에주의하십시오. 배포 이름은 일반적으로 서비스 코드의 현재 배포를 나타내는 GUID입니다. ServiceName을 찾고 있습니다. 서비스 관리 API를 사용하여 Get Hosted Service Properties
에 요청할 수 있습니다. 응답 개체의 ServiceName 속성은 찾고있는 DNS 접두사입니다.
클라우드 서비스의 이름입니다. 이 이름은 DNS 접두어 이름이며 은 클라우드 서비스에 액세스하는 데 사용할 수 있습니다. 클라우드 서비스 이름이면 MyService 경우 예를 들어, 호출하여 클라우드 서비스에 액세스 할 수 있습니다 : http://MyService.cloudapp.net
'ServiceName'에 +1. 나는 이것을 알지 못했다. 감사. –
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;
}
당신이 subcriptionId 및 인증서 지문을 지정해야합니다 내가 따라 인증서를 업로드해야
수단 방금 이름을 얻는 데 배포? 나는 그것을 살펴볼 것이다. –
@ s093294 : 예, 인증서를로드하고 REST 요청을하는 코드를 작성해야합니다. 이것은 수십 줄의 코드를 추가하는 것과 같습니다. 나는 그것이 과잉이라고 동의한다. – sharptooth