我正在尝试调用Add-Blob
Azure cmdlet
Add-Blob -BlobType Block -FilePath $packagePath -ContainerName $blobContainerName
它一直工作到最近,但现在它失败了
Operation could not be completed within the specified time.
消息。我怀疑无论出于何种原因,上传速度都非常低,因此无法快速上传文件。
是否可以增加该操作的超时值?
答案 0 :(得分:2)
您使用的是http://wappowershell.codeplex.com的Cmdlet吗?请注意,这些cmdlet现在(已经过)已弃用,已被Windows Azure管理Cmdlet(http://msdn.microsoft.com/en-us/library/windowsazure/jj554330.aspx)取代。不幸的是,新cmdlet中没有添加blob的cmdlet。
回到你的问题,我认为不可能使用此Cmdlet指定请求超时,并且CodePlex站点上没有可用的源代码供您修改。您可以做的是直接通过PowerShell调用Storage Client库。我冒昧地修改了这篇博文(http://www.fsmpi.uni-bayreuth.de/~dun3/archives/uploading-a-file-to-azure-blob-storage-from-powershell/528.html)中的代码,并在那里包含了对Timeout参数的支持:
Add-Type -Path "C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\ref\Microsoft.WindowsAzure.StorageClient.dll"
$accountName = "<your account name>";
$accountKey = "<your account key>";
$blobContainerName = "<your blob container name>";
$fullFilePath = "<Full path of the file you wish to upload>";
$requestTimeoutInSeconds = 600;
$cloudStorageAccountNameAndKey = new-object Microsoft.WindowsAzure.StorageCredentialsAccountAndKey($accountName, $accountKey);
$cloudStorageAccount = new-object Microsoft.WindowsAzure.CloudStorageAccount($cloudStorageAccountNameAndKey, $true);
$cloudBlobClient = [Microsoft.WindowsAzure.StorageClient.CloudStorageAccountStorageClientExtensions]::CreateCloudBlobClient($cloudStorageAccount)
$blobContainer = $cloudBlobClient.GetContainerReference($blobContainerName);
$blobContainer.CreateIfNotExist();
$blockBlob = $blobContainer.GetBlockBlobReference("<blob name>");
$blobRequestOptions = new-object Microsoft.WindowsAzure.StorageClient.BlobRequestOptions;
$blobRequestOptions.Timeout = [TimeSpan]::FromSeconds($requestTimeoutInSeconds);
$blockBlob.UploadFile($fullFilePath, $blobRequestOptions);
如果你正在寻找微软PowerShell Cmdlet的替代方案,我建议你看看Cerebrata Azure Management Cmdlets [我是这个产品的开发者之一]。它具有用于完整存储管理和服务管理的cmdlet。
希望这有帮助。