首先在我的byte
我添加了代码:
web.config
我创建了容器,正如您所见,它是公开的:
要上传的代码。相同的代码可以使用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);
的例外情况。
答案 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名称,符合以下条件 命名规则:
- 容器名称必须以字母或数字开头,并且可以包含 只有字母,数字和短划线( - )字符。
- 必须紧接在每个短划线( - )字符之前和之后 用字母或数字;不允许连续短划线 容器名称。
- 容器名称中的所有字母都必须小写。
- 容器名称长度必须为3到63个字符。
醇>