2013-05-27 2 views

답변

3

클라우드 서비스 이름을 얻으려면 Service Management REST API을 사용해야합니다. 작업은 조금 복잡합니다!

바로 여기에 당신이해야 할 단계 :

  1. 이 배포 ID를 가져옵니다. 이렇게하면 RoleEnvironment에서 얻을 수 있습니다.
  2. 다음으로 구독에있는 모든 클라우드 서비스의 목록을 가져옵니다. 이를 위해서는 List Hosted Services 작업을 수행해야합니다.
  3. 각 클라우드 서비스에 대해 속성을 가져와야합니다. 이를 위해서는 Get Hosted Service Properties을 수행해야합니다. 또한 embed-detail=true 검색어 문자열 매개 변수를 입력해야합니다.
  4. 응답을 얻으려면 PrivateID 속성을 찾아 배포 ID와 일치시켜야합니다.

블로그 게시물을 작성하여 다음과 같은 코드를 제공합니다. http://gauravmantri.com/2012/03/16/programmatically-finding-deployment-slot-from-code-running-in-windows-azure/.

+0

수단 방금 이름을 얻는 데 배포? 나는 그것을 살펴볼 것이다. –

+0

@ s093294 : 예, 인증서를로드하고 REST 요청을하는 코드를 작성해야합니다. 이것은 수십 줄의 코드를 추가하는 것과 같습니다. 나는 그것이 과잉이라고 동의한다. – sharptooth

5

Gaurav는 부분적으로 정확합니다. 서비스 관리 API를 사용해야합니다. 용어에주의하십시오. 배포 이름은 일반적으로 서비스 코드의 현재 배포를 나타내는 GUID입니다. ServiceName을 찾고 있습니다. 서비스 관리 API를 사용하여 Get Hosted Service Properties에 요청할 수 있습니다. 응답 개체의 ServiceName 속성은 찾고있는 DNS 접두사입니다.

클라우드 서비스의 이름입니다. 이 이름은 DNS 접두어 이름이며 은 클라우드 서비스에 액세스하는 데 사용할 수 있습니다. 클라우드 서비스 이름이면 MyService 경우 예를 들어, 호출하여 클라우드 서비스에 액세스 할 수 있습니다 : http://MyService.cloudapp.net

+0

'ServiceName'에 +1. 나는 이것을 알지 못했다. 감사. –

0
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 및 인증서 지문을 지정해야합니다 내가 따라 인증서를 업로드해야

관련 문제