2017-04-11 55 views
1

如何在azure和Blob上託管的asp.net web應用程序之間創建連接? 當我從我的本地主機上傳文件到blob時,連接工作正常。 但是,當我在azure上發佈網絡應用程序時,該應用程序無法將文件存儲在blob中。我能想到的,爲什麼文件沒有得到上傳的唯一原因是因爲某種連接問題的託管asp.net web應用程序和BLOB之間ASP.net與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是連接字符串。

+0

這是在web/worker角色實例中運行嗎?或VM?或Web應用程序(應用程序服務)?你提到了web應用程序,但是你有一個叫'角色環境'的電話 –

+1

謝謝大衛。我刪除了RoleEnvironment並且它現在可用。 自從最近2天以來,我一直在努力。 :/ – Chetan

回答

1

假設您實際使用Web應用程序(根據您的問題):您正在嘗試使用RoleEnvironment對象來獲取連接字符串。 RoleEnvironment特定於經典雲服務(網絡/輔助角色實例)。