2013-05-27 21 views

Trả lời

3

Bạn cần sử dụng Service Management REST API để nhận tên dịch vụ đám mây. Các hoạt động là một chút phức tạp!

Here're các bước bạn sẽ cần phải làm:

  1. Lấy id triển khai. Điều này bạn sẽ có thể nhận được từ RoleEnvironment.
  2. Tiếp theo bạn tìm nạp danh sách tất cả các dịch vụ đám mây trong đăng ký của bạn. Đối với điều này, bạn sẽ cần phải thực hiện hoạt động List Hosted Services.
  3. Sau đó, đối với mỗi dịch vụ đám mây, bạn sẽ cần có các thuộc tính. Đối với điều này, bạn sẽ cần phải thực hiện Get Hosted Service Properties. Ngoài ra, hãy đảm bảo rằng bạn cung cấp tham số chuỗi truy vấn embed-detail=true.
  4. Trong phản hồi bạn sẽ nhận được, bạn cần phải tìm thuộc tính PrivateID và khớp với thuộc tính triển khai của bạn.

Tôi đã viết lại một bài đăng trên blog có một số mã để cho phép bạn làm điều gì đó như thế này: http://gauravmantri.com/2012/03/16/programmatically-finding-deployment-slot-from-code-running-in-windows-azure/.

+0

Phương tiện tôi phải tải lên một giấy chứng nhận cùng việc triển khai chỉ để có được tên? Tôi sẽ xem qua nó. –

+0

@ s093294: Có, và bạn sẽ phải viết mã tải chứng chỉ đó và thực hiện các yêu cầu REST. Điều đó giống như vài chục dòng mã bổ sung. Tôi đồng ý rằng đó là một quá mức cần thiết. – sharptooth

5

Gaurav đúng một phần. Bạn sẽ phải sử dụng API quản lý dịch vụ. Hãy cẩn thận với thuật ngữ của bạn - Tên triển khai thường là một GUID đại diện cho việc triển khai mã dịch vụ hiện tại. Bạn đang tìm ServiceName. Sử dụng API quản lý dịch vụ, bạn có thể gửi yêu cầu đến Get Hosted Service Properties. Thuộc tính ServiceName trong đối tượng phản hồi là tiền tố DNS bạn đang tìm kiếm:

Tên của dịch vụ đám mây. Tên này là tên tiền tố DNS và có thể được sử dụng để truy cập dịch vụ đám mây. Ví dụ, nếu tên dịch vụ đám mây là MyService bạn có thể truy cập vào các dịch vụ đám mây bằng cách gọi: http://MyService.cloudapp.net

+0

+1 cho 'ServiceName'. Tôi đã không nhận thức được điều này. Cảm ơn. –

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; 
    } 

bạn cần phải xác định subcriptionId và giấy chứng nhận vân tay

Các vấn đề liên quan