Azure UploadFromFileAsync返回错误请求

时间:2016-01-10 01:35:34

标签: .net azure model-view-controller cloud storage

我正在尝试使用CloudFileClient上传文件,但却遇到了奇怪的回应。我直接从SDK附带的Azure示例文件存储项目中获取了示例代码。

我的代码执行完全相同的步骤:

string connection = CloudConfigurationManager.GetSetting("AzureFileStorage");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connection);

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("documents");
await share.CreateIfNotExistsAsync();

// Get a reference to the root directory of the share.        
CloudFileDirectory root = share.GetRootDirectoryReference();

// Put files in this user's folder
CloudFileDirectory dir = root.GetDirectoryReference(User.Identity.GetUserId());
await dir.CreateIfNotExistsAsync();

// Save the document to Azure File Storage
if (System.IO.File.Exists(model.DocumentPath))
{
    CloudFile file = dir.GetFileReference(model.DocumentPath);
    await file.UploadFromFileAsync(model.DocumentPath, FileMode.Open);
}

最后一行返回400错误请求。我在Azure门户网站上检查子目录是否成功完成,我可以通过azure门户手动上传文件,但是当我尝试示例代码并且我知道文件路径是好的时,异步调用总是给我一个黄色页面有400。

我没有使用日期时间,我的容器名称不以大写字母开头,我试图上传的文件只有几个K

CloudFile中的存储Uri是     StorageUri {Primary ='https://mydomain.file.core.windows.net/documents/ / C:%5Cdev%5Creadme.txt';次要=''}

1 个答案:

答案 0 :(得分:0)

我认为问题出现在以下代码行中:

CloudFile file = dir.GetFileReference(model.DocumentPath);

为了测试一下,请将以下内容更改为:

CloudFile file = dir.GetFileReference("readme.txt");

基本上发生的事情是您将整个文件路径(C:\dev\readme.txt)设置为Azure文件的名称,而不仅仅是readme.txt,并且有一个:字符未正确转义的Azure文件的名称。