【发布时间】:2014-06-05 06:16:54
【问题描述】:
asp.net 4.5、Web 表单、vs2013、Identity 2.0、Entity Framework 6.0
我计划使用 Azure 存储 blob 来存储用户上传的图像。所以我下载了 Azure Storage Emulator 在我的本地机器上进行测试。
似乎容器已正确创建并且图像已正确保存 - 因为我在运行应用程序时没有收到任何异常。
但问题是我在我的网页上看不到这张图片。调试代码,我看到这张图片的URI是
http://127.0.0.1:10000/devstoreaccount1/images/my_sub_folder_2/my_image.jpg
我将此网址粘贴到浏览器,IE 告诉我:
The webpage cannot be found 404
Chrome 告诉我:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>ResourceNotFound</Code>
<Message>
The specified resource does not exist. RequestId:e4b64fa8-5985-4aa4-bfbe-50aabd497537 Time:2014-04-21T07:26:04.4264011Z
</Message>
</Error>
我使用 AzureStorageAccess.CreateContainer() 在存储中创建一个容器,并使用 AzureStorageAccess.UploadBlob() 将用户上传的图像(流)保存到存储中。代码如下。
public class AzureStorageAccess
{
// create a container in Azure Storage Emulator
static public void CreateContainer(string containerName)
{
CloudStorageAccount storageAccount = CloudStorageAccount
.Parse("UseDevelopmentStorage=true");
// CloudConfigurationManager.GetSetting("StorageConnectionString")
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
}
// upload a stream to Azure Storage Emulator
static public void UploadBlob(System.IO.Stream stream, string containerName, string blobRelativeURI, out string blobURI)
{
CloudStorageAccount storageAccount = CloudStorageAccount
.Parse("UseDevelopmentStorage=true");
// CloudConfigurationManager.GetSetting("StorageConnectionString")
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobRelativeURI);
blockBlob.UploadFromStream(stream);
blobURI = blockBlob.Uri.AbsoluteUri;
}
}
我在 web.config 中有这个连接字符串。最初我使用的是这个连接字符串。后来当我试图解决这个问题时,我在stackoverflow中阅读了一些我应该使用Parse("UseDevelopmentStorage=true")的帖子。可以看到读取这个连接字符串的代码在上面的代码中被注释掉了。
<add key="StorageConnectionString" value="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1"
/>
谁能告诉我是什么问题?非常感谢!
【问题讨论】:
标签: asp.net azure-blob-storage