2016-02-08 6 views
1

Я хочу выполнить вызовы на основе групп ресурсов. Например: https://msdn.microsoft.com/en-us/library/azure/mt163572.aspxСуществует ли C# sdk/wrapper для API API управления ресурсами Azure?

Библиотеки управления Azure, похоже, не обладают этой возможностью (если только я чего-то не хватает). Существует ли какая-либо SDK или клиентская оболочка, способная совершить такой вызов?

EDIT: Gaurav указал мне на то, что мне нужно. Собираюсь делать людей прочными и расширять то, что я сделал, чтобы помочь очистить грязные мутные воды, которые являются API управления ресурсами Azure.

В диспетчере пакетов вашего приложения сделать: Install-Package Microsoft.Azure.Management.Resources -Pre Затем Microsoft.IdentityModel.Clients Install-Package Microsoft.Azure.Management.Compute -Pre Затем Install-Package .ActiveDirectory -Pre

Следуйте за этим блогом для получения заголовок авторизации/маркер: https://msdn.microsoft.com/en-us/library/azure/dn722415.aspx

Затем вызовите новый API, как так (обратите внимание на небольшие изменения имени):

class Program 
{ 
    static void Main(string[] args) 
    { 
     var token = GetAuthorizationHeader(); 
     var credential = new Microsoft.Rest.TokenCredentials(token); 
     using (var client = new ComputeManagementClient(credential) { SubscriptionId = ConfigurationManager.AppSettings["subscriptionId"] }) 
     { 
      var vms = client.VirtualMachines.ListAll(); 
     } 
    } 

    private static string GetAuthorizationHeader() 
    { 
     AuthenticationResult result = null; 

     var context = new AuthenticationContext("https://login.windows.net/" + ConfigurationManager.AppSettings["tenantId"]); 

     string clientId = ConfigurationManager.AppSettings["clientId"]; 
     string clientSecret = ConfigurationManager.AppSettings["clientSecret"]; 
     ClientCredential clientCred = new ClientCredential(clientId, clientSecret); 

     var thread = new Thread(() => 
     { 
      result = context.AcquireToken(
       "https://management.core.windows.net/", 
       clientCred); 
     }); 

     thread.SetApartmentState(ApartmentState.STA); 
     thread.Name = "AquireTokenThread"; 
     thread.Start(); 
     thread.Join(); 

     if (result == null) 
     { 
      throw new InvalidOperationException("Failed to obtain the JWT token"); 
     } 

     string token = result.AccessToken; 
     return token; 
    } 
} 
+0

Лично я всегда откатывал свои собственные, как только у вас есть принцип обслуживания, есть, возможно, десять строк кода для его выполнения и получения ответа. Есть ли у .net sdk эти функции? –

+0

Он делает. Я использую System WebRequest для выполнения своих вызовов прямо сейчас. Он работает, но у sdk есть явно определенные объекты для создания запросов и ответов, которые развиваются намного быстрее и чище. – user2326106

ответ