ASP.net与blob的连接

时间:2017-04-11 20:34:44

标签: asp.net azure asp.net-mvc-4 blob azure-storage-blobs

如何在azure和Blob上托管的asp.net web app之间建立连接? 当我将文件从localhost上传到blob时,连接工作正常。 但是当我在azure上发布web应用程序时,该应用程序无法将文件存储在blob中。我能想到为什么文件没有上传的唯一原因是托管的asp.net web应用程序和blob之间存在某种连接问题

BlobStorageServices.cs

     public class BlobStorageServices
{
    public CloudBlobContainer GetCloudBlobContainer()
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("ImageStorageAccountConn"));
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference("myimages");
        if (blobContainer.CreateIfNotExists())
        {
            blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
        }
        return blobContainer;
    }
}

HomeController.cs

    BlobStorageServices _blobStorageService = new BlobStorageServices();
    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase image)
    {
        if (image.ContentLength > 0)
        {
            CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer();
            CloudBlockBlob blob = blobContainer.GetBlockBlobReference(image.FileName);
            blob.UploadFromStream(image.InputStream);
        }
        return RedirectToAction("Index");
    }

Index.cshtml

    <h2>Upload Image</h2>
    <p>
    @using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" name="image" />
        <input type="submit" value="Upload" />
    }
    </p>

当我们通过visual studio发布asp.net应用程序时,不确定BlobStorageServices.cs文件是否上传到azure。 ImageStorageAccountConn是连接字符串。

1 个答案:

答案 0 :(得分:1)

假设您实际上正在使用Web App(根据您的问题):您正在尝试使用RoleEnvironment对象来获取连接字符串。 RoleEnvironment特定于传统云服务(Web /工作者角色实例)。