2015-06-23 1 views
0

Вот код, который я использую для развертывания службы в Azure,Использование библиотек управления Azure для развертывания службы. Ошибка: «Формат данного пути не поддерживается».

internal async static Task DeployCloudService(this SubscriptionCloudCredentials credentials) 
     { 
      try 
      { 
       using (var _computeManagementClient = new ComputeManagementClient(credentials)) 
       { 
        Console.WriteLine("Deploying a service..."); 
        var storageConnectionString = await GetStorageAccountConnectionString(credentials); 

        var account = CloudStorageAccount.Parse(storageConnectionString); 

        var blobs = account.CreateCloudBlobClient(); 

        var container = blobs.GetContainerReference(ConfigurationManager.AppSettings["containerName"]); 

        if (!container.Exists()) { Console.WriteLine("Container not found"); }; 

        await container.SetPermissionsAsync(
         new BlobContainerPermissions() 
         { 
          PublicAccess = BlobContainerPublicAccessType.Container 
         }); 

        var blob = container.GetBlockBlobReference(
         Path.GetFileName(ConfigurationManager.AppSettings["packageFilePath"])); 
        var blob1 = container.GetBlockBlobReference(
         Path.GetFileName(ConfigurationManager.AppSettings["configFilePath"])); 
        await _computeManagementClient.Deployments.CreateAsync(ConfigurationManager.AppSettings["serviceName"], 
          DeploymentSlot.Production, 
          new DeploymentCreateParameters 
          { 
           Label = ConfigurationManager.AppSettings["label"], 
           Name = ConfigurationManager.AppSettings["serviceName"], 
           PackageUri = blob.Uri, 
           Configuration = File.ReadAllText((blob1.Uri).ToString()), 
           StartDeployment = true 
          }); 
        Console.WriteLine("Deployment Done!!!"); 
       } 
      } 
      catch (Exception e) { 
       throw; 
      } 
     } 

Идея заключается в том, что пакет и конфигурационный файл уже есть в сгустках в пределах некоторого контейнера, и я могу развернуть свою службу, когда я использую Configuration = File.ReadAllText(ConfigurationManager.AppSettings["configFilePath"]) (который берет файл с локального пути и работает нормально, как ожидалось), но поскольку я не хочу этого делать, я пытаюсь использовать конфигурационный файл из Azure blobs, но File.ReadAllText не берет Uri моего файла, который я проверено в порядке и дается System.SystemException {System.NotSupportedException} с base {"The given path's format is not supported."}. (поскольку он ищет параметр строки)

My Question is that how can we use the config file (.cscfg) from the server

ответ

0

Вы можете попробовать прочитать содержимое блоба с помощью метода DownloadText. Что-то вроде:

new DeploymentCreateParameters 
          { 
           Label = ConfigurationManager.AppSettings["label"], 
           Name = ConfigurationManager.AppSettings["serviceName"], 
           PackageUri = blob.Uri, 
           Configuration = blob1.DownloadText(), 
           StartDeployment = true 
          }); 
+0

Там нет ничего, как 'DownloadText()' метода – ashishraaj

+0

Конечно есть: https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudblockblob. downloadtext.aspx –

+0

Тогда, возможно, это не правильный путь, так или иначе Спасибо @Gaurav. Если я получу что-нибудь, что я прокомментирую. – ashishraaj

Смежные вопросы