2013-05-27 3 views
0

Я стараюсь увеличить количество экземпляров экземпляра по коду.Azure Autoscaling (400) Плохой запрос

Прежде всего, я создал один файл .cer и .pfx-файл, и я загрузил его в .pfx в сертификаты облачных сервисов и .cer для настроек -> сертификаты управления.

После того, как я использовал файл .cer в своем коде. Я не очень хорошо знаю этот файл uplod, это правда?

Вот мой код:

string subscriptionId = "c034e905-......"; 
     string serviceName = "multitenant"; 
     string configFileName = "ServiceConfiguration.cscfg"; 
     string roleName = "Multi.Web"; 

     XNamespace xs = "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"; 
     XDocument configDocument = XDocument.Parse(String.Join("", File.ReadAllLines(Path.GetFullPath(configFileName)))); 
     XAttribute instanceCountAttribute = configDocument.Element(xs + "ServiceConfiguration") 
                  .Elements(xs + "Role") 
                  .Where(xRole => xRole.Attribute("name").Value == roleName).SingleOrDefault() 
                  .Element(xs + "Instances") 
                  .Attribute("count"); 

     int currentInstanceCount = int.Parse(instanceCountAttribute.Value); 

и я проверяю некоторые поля в моей виртуальной машине, и я incease мой currentInstanceCount.

double processorTotal = Convert.ToDouble(performanceCounter.CounterValue); 

      instanceCountAttribute.Value = (currentInstanceCount + 1).ToString(); 

      var serviceManagment = ServiceManagementHelper.CreateServiceManagementChannel("WindowsAzureEndPoint", 
       new X509Certificate2("multitenant.cer")); 
      var changeConfigInput = new ChangeConfigurationInput(); 
      changeConfigInput.Configuration = ServiceManagementHelper.EncodeToBase64String(configDocument.ToString()); 
      try 
      { 
       serviceManagment.ChangeConfigurationBySlot(subscriptionId, serviceName, "Production", changeConfigInput); 
      } 
      catch (WebException e) 
      { 
       throw new Exception(new StreamReader(e.Response.GetResponseStream()).ReadToEnd()); 
      } 

метод ChangeConfigurationBySlot бросает исключение:

Удаленный сервер возвратил неожиданный ответ: (400) Bad Request.

Где я ошибаюсь? Я не мог понять. Это о параметрах метода или неверном сертификате загрузки?

У вас есть оценка?

Спасибо.

ответ

0

Я решил свою проблему.

Речь идет не о сертификации. Сначала я получаю файл конфигурации производства, и я меняю его текущий счетчик экземпляров и передислоцируется.

Вот код:

развертывание вар = managementClient.GetDeploymentBySlot (SubscriptionId, ServiceName, "Производство");

 string configurationXml = ServiceManagementHelper.DecodeFromBase64String(deployment.Configuration); 
     serviceConfiguration = XDocument.Parse(configurationXml); 

     XNamespace xs = "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"; 
     instanceCountAttribute = serviceConfiguration.Element(xs + "ServiceConfiguration") 
                  .Elements(xs + "Role") 
                  .Where(xRole => xRole.Attribute("name").Value == roleName).SingleOrDefault() 
                  .Element(xs + "Instances") 
                  .Attribute("count"); 
     currentInstanceCount = int.Parse(instanceCountAttribute.Value); 
Смежные вопросы