private static string GetBlobPath(HttpRequest request) { string hostName = request.Url.DnsSafeHost; if (hostName == "localdev") { hostName = "www.protonit.net"; } string containerName = hostName.Replace('.', '-'); string currServingFolder = ""; try { // "/2013-03-20_08-27-28"; CloudBlobClient publicClient = new CloudBlobClient("http://caloom.blob.core.windows.net/"); string currServingPath = containerName + "/" + RenderWebSupport.CurrentToServeFileName; var currBlob = publicClient.GetBlockBlobReference(currServingPath); string currServingData = currBlob.DownloadText(); string[] currServeArr = currServingData.Split(':'); string currActiveFolder = currServeArr[0]; var currOwner = VirtualOwner.FigureOwner(currServeArr[1]); InformationContext.Current.Owner = currOwner; currServingFolder = "/" + currActiveFolder; } catch { } return containerName + currServingFolder + request.Path; }
public AzureOperations(string connectionString) { CloudStorageAccount account = CloudStorageAccount.Parse(connectionString); client = account.CreateCloudBlobClient(); var container = client.GetContainerReference("$root"); container.CreateIfNotExist(); }
public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 12; #if DEBUG account = CloudStorageAccount.DevelopmentStorageAccount; #else account = new CloudStorageAccount(accountAndKey, true); #endif tableContext = new TableServiceContext(account.TableEndpoint.ToString(), account.Credentials); //client = new CloudQueueClient(account.BlobEndpoint.ToString(), account.Credentials); qclient = account.CreateCloudQueueClient(); q = qclient.GetQueueReference("icd9mapplotrequests"); rows = new List<ICD9MapPlotResultEntry>(); bclient = account.CreateCloudBlobClient(); container = bclient.GetContainerReference("results"); container.CreateIfNotExist(); client = account.CreateCloudTableClient(); client.CreateTableIfNotExist("ICD9MapPlotResult"); client.CreateTableIfNotExist("DoctorDetails"); client.CreateTableIfNotExist("PatientDetails"); // For information on handling configuration changes // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. return base.OnStart(); }
public WorkerRoleLoader() { this.LastModified = DateTime.MinValue; this.storageAccount = CloudStorageAccount.FromConfigurationSetting(DataConfigurationKey); this.blobStorage = storageAccount.CreateCloudBlobClient(); }
public LargeDataExample(String queueName) { CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["DataConnectionString"]); CloudQueueClient cloudQueueClient = cloudStorageAccount.CreateCloudQueueClient(); cloudQueue = cloudQueueClient.GetQueueReference(queueName); cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); }
protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); DataServiceContext context = new DataServiceContext(CloudStorageAccount.DevelopmentStorageAccount.TableEndpoint.AbsoluteUri, CloudStorageAccount.DevelopmentStorageAccount.Credentials); CloudBlobClient blobClient = new CloudBlobClient(CloudStorageAccount.DevelopmentStorageAccount.BlobEndpoint.AbsoluteUri, CloudStorageAccount.DevelopmentStorageAccount.Credentials); Services = new ServiceFacade(); Services.Accounts = new AccountService(Services, new AccountServiceImplementor(context)); Services.Groups = new GroupService(Services, new GroupServiceImplementor(context)); Services.Roles = new RoleService(Services, new RoleServiceImplementor(context)); Services.Images = new ImageService(Services, new ImageServiceImplementor(context)); Services.Blobs = new BlobService(Services, new BlobServiceImplementor(blobClient)); if (User.Identity.IsAuthenticated) Account = Services.Accounts.Get(User.Identity.Name); else Account = null; if (null == Account) FormsAuthentication.SignOut(); else { Account.LastActivityDate = DateTime.Now; Account.Save(); } ViewData["Account"] = Account; }
public AzureBlobClient(Uri endpoint, string accountName, string accountKey, int timeoutInMinutes = 30, int parallelOperationThreadCount = 1) { var credentials = new StorageCredentialsAccountAndKey(accountName, accountKey); blobClient = new CloudBlobClient(endpoint, credentials); blobClient.Timeout = new TimeSpan(0, timeoutInMinutes, 0); blobClient.ParallelOperationThreadCount = parallelOperationThreadCount; }
// Constructor - get settings from a hosted service configuration or .NET configuration file. public BlobHelper(string configurationSettingName, bool hostedService) { if (hostedService) { CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); } ); } else { CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSettingPublisher) => { var connectionString = ConfigurationManager.ConnectionStrings[configName].ConnectionString; configSettingPublisher(connectionString); } ); } Account = CloudStorageAccount.FromConfigurationSetting(configurationSettingName); BlobClient = Account.CreateCloudBlobClient(); BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero); }
/// <summary> /// Get the signature hash embedded inside the Shared Access Signature. /// </summary> /// <param name="policy">The shared access policy to hash.</param> /// <param name="groupPolicyIdentifier">An optional identifier for the policy.</param> /// <param name="resourceName">The canonical resource string, unescaped.</param> /// <param name="client">The client whose credentials are to be used for signing.</param> /// <returns>The signed hash.</returns> internal static string GetSharedAccessSignatureHashImpl( SharedAccessPolicy policy, string groupPolicyIdentifier, string resourceName, CloudBlobClient client) { CommonUtils.AssertNotNull("policy", policy); CommonUtils.AssertNotNullOrEmpty("resourceName", resourceName); CommonUtils.AssertNotNull("client", client); ////StringToSign = signedpermissions + "\n" //// signedstart + "\n" //// signedexpiry + "\n" //// canonicalizedresource + "\n" //// signedidentifier ////HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) string stringToSign = string.Format( "{0}\n{1}\n{2}\n{3}\n{4}", SharedAccessPolicy.PermissionsToString(policy.Permissions), GetDateTimeOrEmpty(policy.SharedAccessStartTime), GetDateTimeOrEmpty(policy.SharedAccessExpiryTime), resourceName, groupPolicyIdentifier); string signature = client.Credentials.ComputeHmac(stringToSign); return signature; }
//This function is using storage client ddl of blob public byte[] DownloadBlobClient(string UserId, string BlobName) { // Retrieve storage account from connection string. Microsoft.WindowsAzure.CloudStorageAccount StorageAccount = Microsoft.WindowsAzure.CloudStorageAccount.Parse(Convert.ToString(ConfigurationManager.AppSettings["StorageConnectionString"])); // Create the blob client. Microsoft.WindowsAzure.StorageClient.CloudBlobClient blobClient = StorageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container. Microsoft.WindowsAzure.StorageClient.CloudBlobContainer container = blobClient.GetContainerReference(UserId); // Create the container if it doesn't exist. container.CreateIfNotExist(); //Set permission to public container.SetPermissions( new Microsoft.WindowsAzure.StorageClient.BlobContainerPermissions { PublicAccess = Microsoft.WindowsAzure.StorageClient.BlobContainerPublicAccessType.Off }); // Retrieve reference to a blob named Microsoft.WindowsAzure.StorageClient.CloudBlockBlob blockBlob = container.GetBlockBlobReference(BlobName); return(blockBlob.DownloadByteArray()); }
public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 100; //Initialize Indexer storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("CrawlerStorage")); //Initialize URL Queue urlQueueClient = storageAccount.CreateCloudQueueClient(); urlQueue = urlQueueClient.GetQueueReference("urlqueue"); if (urlQueue.CreateIfNotExist()) { //Add first URL to the queue CloudQueueMessage firstURL = new CloudQueueMessage(startURL); urlQueue.AddMessage(firstURL); } //Initialize Index Queue indexQueueClient = storageAccount.CreateCloudQueueClient(); indexQueue = indexQueueClient.GetQueueReference("indexqueue"); indexQueue.CreateIfNotExist(); //Initialize Database Blob databaseClient = storageAccount.CreateCloudBlobClient(); databaseContainer = databaseClient.GetContainerReference("wordfrequencies"); databaseContainer.CreateIfNotExist(); var permission = databaseContainer.GetPermissions(); permission.PublicAccess = BlobContainerPublicAccessType.Container; databaseContainer.SetPermissions(permission); return base.OnStart(); }
public SharedAccessSignatureController(CloudStorageAccount storageAccount) { if (storageAccount == null) throw new ArgumentNullException("storageAccount", Constants.CloudStorageAccountNullArgumentErrorMessage); this.cloudBlobClient = storageAccount.CreateCloudBlobClient(); }
public BlobEntities() { if (storageInitialized) { return; } lock (gate) { if (storageInitialized) { return; } // read account configuration settings var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); // create blob container for images blobStorage = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobStorage.GetContainerReference("productimages"); container.CreateIfNotExist(); // configure container for public access var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); storageInitialized = true; } }
// Constructor - pass in a storage connection string. public BlobHelper(string connectionString) { Account = CloudStorageAccount.Parse(connectionString); BlobClient = Account.CreateCloudBlobClient(); BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero); }
public Storage(CloudStorageAccount account) { this.account = account; fileStorage = account.CreateCloudBlobClient(); /* Initialize file container */ container = fileStorage.GetContainerReference(filesContainer); container.CreateIfNotExist(); var permissions = container.GetPermissions(); /* Full permissions. From MSDN, Container-level public access. Anonymous clients can * read blob content and metadata and container metadata, and can list the blobs within the container. * * Other alternatives are Blob (can read content but not metadata) and Off (no * anonymous access). */ // permissions.PublicAccess = BlobContainerPublicAccessType.Container; permissions.PublicAccess = BlobContainerPublicAccessType.Off; permissions.SharedAccessPolicies.Remove("basic"); permissions.SharedAccessPolicies.Add("basic", new SharedAccessPolicy() { }); container.SetPermissions(permissions); /* Initialize table (for file metadata) */ CloudTableClient.CreateTablesFromModel( typeof(FileDataContext), account.TableEndpoint.AbsoluteUri, account.Credentials); }
internal static bool InitializeStorage() { try { // 仅为测试目的,如果我们不在计算仿真程序中运行该服务,我们始终使用 dev 存储. if (RoleEnvironment.IsAvailable) { CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => { configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); }); StorageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); } else { StorageAccount = CloudStorageAccount.DevelopmentStorageAccount; } CloudBlobClient blobClient = new CloudBlobClient(StorageAccount.BlobEndpoint, StorageAccount.Credentials); CloudBlobContainer container = blobClient.GetContainerReference("videostories"); container.CreateIfNotExist(); CloudQueueClient queueClient = new CloudQueueClient(StorageAccount.QueueEndpoint, StorageAccount.Credentials); CloudQueue queue = queueClient.GetQueueReference("videostories"); queue.CreateIfNotExist(); CloudTableClient tableClient = new CloudTableClient(StorageAccount.TableEndpoint.AbsoluteUri, StorageAccount.Credentials); tableClient.CreateTableIfNotExist("Stories"); return true; } catch (Exception ex) { Trace.Write("错误初始化存储: " + ex.Message, "Error"); return false; } }
//Allows other server code to use the InsertBlobUrl logic. //Maximum blob size is 32mb. internal static Task<string> InsertBlobUrlHelper(Guid ownerPartyId, Guid fileGuid) { return AsyncHelper.RunAsync(() => { //Create service client for credentialed access to the Blob service. var blobClient = new CloudBlobClient(AzureServerHelpers.BlobStorageUrl, new StorageCredentialsAccountAndKey(AzureServerHelpers.AccountName, AzureServerHelpers.AccountKey)) { Timeout = TimeSpan.FromMilliseconds(TimeoutMilliseconds) }; //Get a reference to a container, which may or may not exist. var blobContainer = blobClient.GetContainerReference(AzureServerHelpers.BuildContainerUrl(ownerPartyId)); //Create a new container, if it does not exist blobContainer.CreateIfNotExist(new BlobRequestOptions { Timeout = TimeSpan.FromMilliseconds(TimeoutMilliseconds) }); //Setup cross domain policy so Silverlight can access the server CreateSilverlightPolicy(blobClient); //Get a reference to a blob, which may or may not exist. var blob = blobContainer.GetBlobReference(fileGuid.ToString()); blob.UploadByteArray(new byte[] { }); // Set the metadata into the blob blob.Metadata["Submitter"] = ownerPartyId.ToString(); blob.SetMetadata(); // Set the properties blob.Properties.ContentType = "application/octet-stream"; blob.SetProperties(); return blob.GetSharedAccessSignature(new SharedAccessPolicy { Permissions = SharedAccessPermissions.Write, SharedAccessExpiryTime = DateTime.UtcNow + new TimeSpan(0, 30, 0) }); }); }
/// <summary> /// Connect to an Azure subscription and upload a package to blob storage. /// </summary> protected override void AzureExecute() { string storageKey = this.StorageKeys.Get(this.ActivityContext).Primary; string storageName = this.StorageServiceName.Get(this.ActivityContext); string filePath = this.LocalPackagePath.Get(this.ActivityContext); var baseAddress = string.Format(CultureInfo.InvariantCulture, ConfigurationConstants.BlobEndpointTemplate, storageName); var credentials = new StorageCredentialsAccountAndKey(storageName, storageKey); var client = new CloudBlobClient(baseAddress, credentials); const string ContainerName = "mydeployments"; string blobName = string.Format( CultureInfo.InvariantCulture, "{0}_{1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss", CultureInfo.InvariantCulture), Path.GetFileName(filePath)); CloudBlobContainer container = client.GetContainerReference(ContainerName); container.CreateIfNotExist(); CloudBlob blob = container.GetBlobReference(blobName); UploadBlobStream(blob, filePath); this.PackageUrl.Set(this.ActivityContext, string.Format(CultureInfo.InvariantCulture, "{0}{1}{2}{3}", client.BaseUri, ContainerName, client.DefaultDelimiter, blobName)); }
private void OnInitialize() { var selfInstance = InstanceEnumerator.GetSelf(); cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(ConfigurationSettingsKeys.StorageConnectionString)); log.Info("Storage account selected: {0}",cloudStorageAccount.BlobEndpoint); cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); log.Info("Storage client created"); var containerName = ConfigurationProvider.GetSetting(ConfigurationSettingsKeys.StorageContainerName,"ravendb"); // In order to force a connection we just enumerate all available containers: var availableContainers = cloudBlobClient.ListContainers().ToArray(); foreach (var container in availableContainers) { log.Info("Available container: {0}",container.Name); } if (!availableContainers.Any(c => c.Name.Equals(containerName))) { log.Info("Container {0} does not exist, creating",containerName); // Container does not exist: cloudBlobClient.GetContainerReference(containerName).Create(); } cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName); log.Info("Container {0} selected",cloudBlobContainer.Name); localCache = RoleEnvironment.GetLocalResource(ConfigurationSettingsKeys.StorageCacheResource); log.Info("Cache resource retrieved: {0}, path: {1}",localCache.Name,localCache.RootPath); CloudDrive.InitializeCache(localCache.RootPath, localCache.MaximumSizeInMegabytes); log.Info("Cache initialized: {0} mb",localCache.MaximumSizeInMegabytes); var driveName = string.Format("{0}{1}.vhd", selfInstance.RoleName, selfInstance.RoleInstanceIndex).ToLowerInvariant(); log.Info("Virtual drive name: {0}",driveName); var pageBlob = cloudBlobContainer.GetPageBlobReference(driveName); log.Info("Virtual drive blob: {0}",pageBlob.Uri); cloudDrive = cloudStorageAccount.CreateCloudDrive(pageBlob.Uri.ToString()); log.Info("Virtual drive created: {0}",cloudDrive.Uri); var storageSize = ConfigurationProvider.GetSetting(ConfigurationSettingsKeys.StorageSizeInMb, 50000); log.Info("Storage size: {0} mb",storageSize); cloudDrive.CreateIfNotExist(storageSize); log.Info("Virtual drive initialized: {0}",cloudDrive.Uri); var mountedDirectoryPath = cloudDrive.Mount(storageSize, DriveMountOptions.None); log.Info("Virtual drive mounted at: {0}",mountedDirectoryPath); mountedDirectory = new DirectoryInfo(mountedDirectoryPath); log.Info("Executing drive benchmark for: {0}",mountedDirectoryPath); ExecuteBenchmarks(mountedDirectory,storageSize); log.Info("Storage initialization succeeded"); }
public static Uri UploadFile(string storageName, string storageKey, string filePath) { var baseAddress = string.Format(CultureInfo.InvariantCulture, ConfigurationConstants.BlobEndpointTemplate, storageName); var credentials = new StorageCredentialsAccountAndKey(storageName, storageKey); var client = new CloudBlobClient(baseAddress, credentials); string containerName = "mydeployments"; string blobName = string.Format( CultureInfo.InvariantCulture, "{0}_{1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss", CultureInfo.InvariantCulture), Path.GetFileName(filePath)); CloudBlobContainer container = client.GetContainerReference(containerName); container.CreateIfNotExist(); CloudBlob blob = container.GetBlobReference(blobName); // blob.UploadFile(filePath); UploadBlobStream(blob, filePath); return new Uri( string.Format( CultureInfo.InvariantCulture, "{0}{1}{2}{3}", client.BaseUri, containerName, client.DefaultDelimiter, blobName)); }
public AzureStorageProvider(CloudStorageAccount storageAccount) { cloudStorageAccount = storageAccount; // Create the blob client blobStorage = cloudStorageAccount.CreateCloudBlobClient(); }
public static void MyClassInitialize(TestContext testContext) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(DevConnectionString); blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference(TestContainerName); container.CreateIfNotExist(); }
public AzureSystemEventStore() { Streamer = new EventStreamer(new EventSerializer(MessagesProvider.GetKnownEventTypes())); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Settings.Default.AzureConnectionString); blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference(Settings.Default.AzureContainerName); container.CreateIfNotExist(); }
static AzureHelper() { var cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=mintchipmarket;AccountKey=6wtpT0uW75m2LsThfROjp+cMA5zWx8VllZhJ5tM7kPAZZlIbPZ0t7pIXkO0s0AnzZ4sWMnl+rc5+1KjlNWKlfA=="); var blobClient = new CloudBlobClient(cloudStorageAccount.BlobEndpoint, cloudStorageAccount.Credentials); _container = blobClient.GetContainerReference("files"); _container.CreateIfNotExist(); _container.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Off }); }
/// <summary> /// Connects to the storage account and creates the default container /// </summary> private void ConnectToBlobStorage() { storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); blobClient = storageAccount.CreateCloudBlobClient(); blobContainer = blobClient.GetContainerReference("testcontainer"); blobContainer.CreateIfNotExist(); blobContainer.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob }); }
public AzureBlobRepository(CloudStorageAccount storageAccount, CloudBlobClient blobClient, CloudBlobContainer blobContainer) { this._storageAccount = storageAccount; this._blobClient = blobClient; this._blobContainer = blobContainer; _blobContainer.SetPermissions(GetPermissions()); }
public BlobTapeStorageFactory(CloudBlobClient cloudBlobClient, string containerName) { if (containerName.Any(Char.IsUpper)) throw new ArgumentException("All letters in a container name must be lowercase."); _cloudBlobClient = cloudBlobClient; _containerName = containerName; }
internal AzureBlobStore(string accountName, string targetContainer, string accountKey) { _storageAccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(accountName, accountKey), true); _blobStorage = _storageAccount.CreateCloudBlobClient(); _targetContainer = targetContainer; CreateContainer(); }
// Constructor - pass in a storage connection string. public BlobHelper(string connectionString) { string storageConnectionString = ConfigurationManager.ConnectionStrings[connectionString].ConnectionString; Account = CloudStorageAccount.Parse(storageConnectionString); BlobClient = Account.CreateCloudBlobClient(); BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero); }
public AzureStorageClient(CloudStorageAccount account) { client = account.CreateCloudBlobClient(); client.DefaultDelimiter = "/"; container = client.GetContainerReference("documents"); container.CreateIfNotExist(); }
/// <summary> /// Initializes a new instance of the <see cref="T:StorageCredentialsVerifier" /> class. /// </summary> /// <param name="container">The IoC container.</param> public StorageCredentialsVerifier(IContainer container) { try { _storage = container.Resolve<CloudBlobClient>(); } catch(ComponentNotRegisteredException) { } catch(DependencyResolutionException) { } }
/// <summary> /// Configures Azure account and container /// </summary> /// <param name="bloburl">string with url to the blob</param> /// <param name="connectionString">Azure blob connection string</param> public void ConfigureAzure(string bloburl, string connectionString) { // Azure preparations DestinationBlobUrl = bloburl; // Set storage account cloudStorageAccount = CloudStorageAccount.Parse(connectionString); // Initialize client blobClient = new Microsoft.WindowsAzure.StorageClient.CloudBlobClient(cloudStorageAccount.BlobEndpoint, cloudStorageAccount.Credentials); // Get the container reference. blobContainer = blobClient.GetContainerReference(bloburl); // Create the container if it does not exist. blobContainer.CreateIfNotExist(); // Set permissions on the container. containerPermissions = new BlobContainerPermissions(); containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob; blobContainer.SetPermissions(containerPermissions); }
public static Tuple <bool, Exception> IsValidAccount(string account, string accountKey) { bool accountValid = true; Exception exception = null; try { Microsoft.WindowsAzure.CloudStorageAccount storageAccount = null; Microsoft.WindowsAzure.StorageClient.CloudBlobClient blobClient = null; Microsoft.WindowsAzure.StorageClient.CloudBlobContainer container = null; storageAccount = new Microsoft.WindowsAzure.CloudStorageAccount(new Microsoft.WindowsAzure.StorageCredentialsAccountAndKey(account, accountKey), true); blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference(AzureConfigContainerName); container.CreateIfNotExist(); } catch (Exception e) { accountValid = false; exception = e; } return(new Tuple <bool, Exception>(accountValid, exception)); }
public static bool UploadConfig(string configZipPath, string AzureAccountName, string AzureAccountKey, string orgID, string studyID, string homeID, string desiredConfigFilename, NLog.Logger logger = null) { Microsoft.WindowsAzure.CloudStorageAccount storageAccount = null; Microsoft.WindowsAzure.StorageClient.CloudBlobClient blobClient = null; Microsoft.WindowsAzure.StorageClient.CloudBlobContainer container = null; Microsoft.WindowsAzure.StorageClient.CloudBlockBlob blockBlob = null; string leaseId = null; try { storageAccount = new Microsoft.WindowsAzure.CloudStorageAccount(new Microsoft.WindowsAzure.StorageCredentialsAccountAndKey(AzureAccountName, AzureAccountKey), true); blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference(AzureConfigContainerName); container.CreateIfNotExist(); blockBlob = container.GetBlockBlobReference(DesiredConfigBlobName(orgID, studyID, homeID, desiredConfigFilename)); bool blobExists = BlockBlobExists(blockBlob); if (blobExists) { leaseId = AcquireLease(blockBlob, logger); // Acquire Lease on Blob } else { blockBlob.Container.CreateIfNotExist(); } if (blobExists && leaseId == null) { if (null != logger) { logger.Error("AcquireLease on Blob: " + DesiredConfigBlobName(orgID, studyID, homeID, desiredConfigFilename) + " Failed"); } return(false); } string url = blockBlob.Uri.ToString(); if (blockBlob.ServiceClient.Credentials.NeedsTransformUri) { url = blockBlob.ServiceClient.Credentials.TransformUri(url); } var req = BlobRequest.Put(new Uri(url), AzureBlobLeaseTimeout, new Microsoft.WindowsAzure.StorageClient.BlobProperties(), Microsoft.WindowsAzure.StorageClient.BlobType.BlockBlob, leaseId, 0); using (var writer = new BinaryWriter(req.GetRequestStream())) { writer.Write(File.ReadAllBytes(configZipPath)); writer.Close(); } blockBlob.ServiceClient.Credentials.SignRequest(req); req.GetResponse().Close(); ReleaseLease(blockBlob, leaseId); // Release Lease on Blob return(true); } catch (Exception e) { if (null != logger) { logger.ErrorException("UploadConfig_Azure, configZipPath: " + configZipPath, e); } ReleaseLease(blockBlob, leaseId); return(false); } }
public static bool DownloadConfig(string downloadedZipPath, string AzureAccountName, string AzureAccountKey, string orgID, string studyID, string homeID, string configFilename, NLog.Logger logger = null) { Microsoft.WindowsAzure.CloudStorageAccount storageAccount = null; Microsoft.WindowsAzure.StorageClient.CloudBlobClient blobClient = null; Microsoft.WindowsAzure.StorageClient.CloudBlobContainer container = null; Microsoft.WindowsAzure.StorageClient.CloudBlockBlob blockBlob = null; string leaseId = null; try { storageAccount = new Microsoft.WindowsAzure.CloudStorageAccount(new Microsoft.WindowsAzure.StorageCredentialsAccountAndKey(AzureAccountName, AzureAccountKey), true); blobClient = storageAccount.CreateCloudBlobClient(); container = blobClient.GetContainerReference(AzureConfigContainerName); if (configFilename == PackagerHelper.ConfigPackagerHelper.actualConfigFileName) { blockBlob = container.GetBlockBlobReference(ActualConfigBlobName(orgID, studyID, homeID, configFilename)); } else if (configFilename == PackagerHelper.ConfigPackagerHelper.desiredConfigFileName) { blockBlob = container.GetBlockBlobReference(DesiredConfigBlobName(orgID, studyID, homeID, configFilename)); } bool blobExists = BlockBlobExists(blockBlob); if (blobExists) { leaseId = AcquireLease(blockBlob, logger); // Acquire Lease on Blob } else { return(false); } if (blobExists && leaseId == null) { if (null != logger) { logger.Error("AcquireLease on Blob: " + ActualConfigBlobName(orgID, studyID, homeID, configFilename) + " Failed"); } return(false); } string url = blockBlob.Uri.ToString(); if (blockBlob.ServiceClient.Credentials.NeedsTransformUri) { url = blockBlob.ServiceClient.Credentials.TransformUri(url); } var req = BlobRequest.Get(new Uri(url), AzureBlobLeaseTimeout, null, leaseId); blockBlob.ServiceClient.Credentials.SignRequest(req); using (var reader = new BinaryReader(req.GetResponse().GetResponseStream())) { FileStream zipFile = new FileStream(downloadedZipPath, FileMode.OpenOrCreate); reader.BaseStream.CopyTo(zipFile); zipFile.Close(); } req.GetResponse().GetResponseStream().Close(); ReleaseLease(blockBlob, leaseId); // Release Lease on Blob return(true); } catch (Exception e) { if (null != logger) { logger.ErrorException("DownloadConfig_Azure, downloadZipPath: " + downloadedZipPath, e); } ReleaseLease(blockBlob, leaseId); return(false); } }