2017-04-11 4 views
1

Wie erstelle ich eine Verbindung zwischen asp.net Web App auf Azure und Blob gehostet? Die Verbindung funktioniert einwandfrei, wenn ich Dateien von meinem localhost nach blob hochlade. Aber wenn ich die Web App auf azurblau veröffentliche, kann die App keine Datei im Blob speichern. Der einzige Grund, warum ich denken kann, warum die Datei wegen irgendeine Art von Verbindungsproblem zwischen dem gehosteten asp.net Web-App hochgeladen bekommt und die BlobASP.net Verbindung mit 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> 

Nicht sicher, ob die BlobStorageServices.cs-Datei in Azure hochgeladen wird, wenn wir die Asp.net-App über Visual Studio veröffentlichen. ImageStorageAccountConn ist die Verbindungszeichenfolge.

+0

Wird dies in einer Web/Worker-Rolleninstanz ausgeführt? Oder VM? Oder Web App (App-Service)? Sie erwähnten die Web App, aber Sie haben einen Aufruf an 'RoleEnvironment' –

+1

Danke David. Ich habe RoleEnvironment entfernt und es funktioniert jetzt. Ich habe damit seit den letzten 2 Tagen gekämpft. : / – Chetan

Antwort

1

Angenommen, Sie verwenden Web App (für Ihre Frage): Sie versuchen, das Objekt RoleEnvironment zu verwenden, um die Verbindungszeichenfolge abzurufen. RoleEnvironment ist spezifisch für klassische Cloud-Services (Web-/Worker-Rolleninstanzen).