Azure存储模拟器不保存文件

时间:2017-08-23 04:13:07

标签: c# azure-storage-emulator

首先在我的byte我添加了代码:

web.config

我创建了容器,正如您所见,它是公开的:

enter image description here

要上传的代码。相同的代码可以使用Azure帐户,但不能使用模拟器!

<appSettings>
 <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

我总是得到CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("imagesproducts"); var resultList = JsonConvert.DeserializeObject<List<string>>(Images); var urlsList = new List<String>(); for(int i = 0; i < resultList.Count; i++) { byte[] singleImage = String.IsNullOrEmpty(resultList[i])? null : System.Convert.FromBase64String(resultList[i]); CloudBlockBlob block = container.GetBlockBlobReference(Guid.NewGuid().ToString() + ".jpg"); using (var stream = new MemoryStream(singleImage, writable: false)) { await block.UploadFromStreamAsync(stream); } urlsList.Add(block.Uri.AbsolutePath); } return JsonConvert.SerializeObject(urlsList); 的例外情况。

1 个答案:

答案 0 :(得分:0)

我知道这是一个较旧的主题,但我在研究可能节省其他时间的类似问题时得到了一些调查结果:

1)确保Azure存储仿真器连接字符串正在解析以显示本地主机IP端点,而不是默认的Azure端点。

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1; AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

2)容器名称将导致此问题。容器有特定的命名规则。

  

容器名称必须是有效的DNS名称,符合以下条件   命名规则:

     
      
  1. 容器名称必须以字母或数字开头,并且可以包含   只有字母,数字和短划线( - )字符。
  2.   
  3. 必须紧接在每个短划线( - )字符之前和之后   用字母或数字;不允许连续短划线   容器名称。
  4.   
  5. 容器名称中的所有字母都必须小写。
  6.   
  7. 容器名称长度必须为3到63个字符。
  8.   

参考:https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata