 <p>Code you use for uploading images won't work in Azure. Just imagine how this should work if you scale up nubmer of instances. You should use Azure blob storage to upload files in Azure. You can google for good tutorial, but to make a long story short you should do the following:</p> <p>1.) Create Azure Storage Account at manage.windowsazure.com</p> <p>2.) Setup storage connection string (you can get AccountKey from you storage account)</p> <pre><code>&lt;configuration&gt; &lt;appSettings&gt; &lt;add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=nYV0gln9fT7bvY+rxu2iWAEyzPNITGkhM88J8HUoyofpK7C8fHcZc2kIZp6cKgYRUM74lHI84L50Iau1+9hPjB==" /&gt; &lt;/appSettings&gt; &lt;/configuration&gt; </code></pre> <p>In Your code</p> <p>3.) Add following namespaces</p> <pre><code>using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Auth; using Microsoft.WindowsAzure.Storage.Blob; </code></pre> <p>4.) Initialize Storage Connection</p> <pre><code>CloudStorageAccount storageAccount = CloudStorageAccount.Parse( ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); </code></pre> <p>5.) Create container, if it diesn't exist</p> <pre><code>// Retrieve a reference to a container. CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); // Create the container if it doesn't already exist. container.CreateIfNotExists(); container.SetPermissions( new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); </code></pre> <p>6.) Specify object name</p> <blockquote> <p>// Retrieve reference to a blob named "myblob". CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");</p> </blockquote> <p>7.) Upload fata</p> <blockquote> <p>MemoryStream ms = new MemoryStream();<br> Image img = Image.FromStream(model.ImageUpload.InputStream);<br> img.Save(ms, ImageFormat.Jpeg);</p> <p>// Create or overwrite the "myblob" blob with contents from file. blockBlob.UploadFromStream(ms.ToArray()); </p> </blockquote> <p>Code you linked to will look like this:</p> <blockquote> <p>[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(ImageViewModel model) { var validImageTypes = new string[] { "image/gif", "image/jpeg", "image/pjpeg", "image/png" }</p> <pre><code>if (model.ImageUpload == null || model.ImageUpload.ContentLength == 0) { ModelState.AddModelError("ImageUpload", "This field is required"); } else if (!imageTypes.Contains(model.ImageUpload.ContentType)) { ModelState.AddModelError("ImageUpload", "Please choose either a GIF, JPG or PNG image. } if (ModelState.IsValid) { var image = new Image { Title = model.Title, AltText = model.AltText, Caption = model.Caption } if (model.ImageUpload != null &amp;&amp; model.ImageUpload.ContentLength &gt; 0) { </code></pre> <p>CloudStorageAccount storageAccount = CloudStorageAccount.Parse( ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container. CloudBlobContainer container = blobClient.GetContainerReference("uploads");</p> </blockquote> <pre><code>// Create the container if it doesn't already exist. container.CreateIfNotExists(); container.SetPermissions( new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); </code></pre> <blockquote> <p>blockBlob = container.GetBlockBlobReference(model.ImageUpload.FileName);</p> <pre><code> var imageUrl = blockBlob.Uri; </code></pre> <p>MemoryStream ms = new MemoryStream();<br> Image img = Image.FromStream(model.ImageUpload.InputStream);<br> img.Save(ms, ImageFormat.Jpeg);</p> <p>// Create or overwrite the "myblob" blob with contents from file. blockBlob.UploadFromStream(ms.ToArray()); image.ImageUrl = imageUrl; }</p> <pre><code> db.Create(image); db.SaveChanges(); return RedirectToAction("Index"); } return View(model); } </code></pre> </blockquote>