示例#1
0
        public AzureStorage(
            ICloudBlobDirectory directory,
            Uri baseAddress,
            TimeSpan maxExecutionTime,
            TimeSpan serverTimeout,
            bool initializeContainer) : base(
                baseAddress ?? GetDirectoryUri(directory))
        {
            _directory = directory;

            // Unless overridden at the level of a single API call, these options will apply to all service calls that
            // use BlobRequestOptions.
            _directory.ServiceClient.DefaultRequestOptions = new BlobRequestOptions()
            {
                ServerTimeout        = serverTimeout,
                MaximumExecutionTime = maxExecutionTime,
                RetryPolicy          = new ExponentialRetry()
            };

            if (initializeContainer)
            {
                if (_directory.Container.CreateIfNotExists())
                {
                    _directory.Container.SetPermissions(new BlobContainerPermissions {
                        PublicAccess = BlobContainerPublicAccessType.Blob
                    });

                    if (Verbose)
                    {
                        Trace.WriteLine(string.Format("Created '{0}' public container", _directory.Container.Name));
                    }
                }
            }
        }
示例#2
0
        private static Uri GetDirectoryUri(ICloudBlobDirectory directory)
        {
            Uri uri = new UriBuilder(directory.Uri)
            {
                Scheme = "http",
                Port   = 80
            }.Uri;

            return(uri);
        }