Azure: There is not enough space on the disk
Problem
There may be some times where you will see this message when developing an application for Windows Azure. The message will look like:
There is not enough space on the disk.
Description: An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more
information about the error and where it originated in the code.
Exception Details: System.IO.IOException: There is not enough
space on the disk.
Source Error:
An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location
of the exception can be identified using the exception stack trace
below.
Stack Trace:
[IOException: There is not enough space on the disk.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +10546789
System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) +10351324
System.Web.TempFile.AddBytes(Byte[] data, Int32 offset, Int32 length) +26
System.Web.HttpRawUploadedContent.AddBytes(Byte[] data, Int32 offset, Int32 length) +327
System.Web.HttpRequest.GetEntireRawContent() +515
System.Web.HttpRequest.GetMultipartContent() +72
System.Web.HttpRequest.FillInFormCollection() +248
System.Web.HttpRequest.get_Form() +79
System.Web.HttpRequest.get_HasForm() +73
System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +54
System.Web.UI.Page.DeterminePostBackMode() +90
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +268
The typical situation where you will see this is if you are using the ASP.NET FileUpload control to let users upload files.
If the file they try to upload exceeds 100 MB, it will error with this message.
Resolution
There are a few ways that you can work around this issue. The best solution would be to use Silverlight to handle the upload instead of the ASP.NET FileUpload control. By using Silverlight, you can have the client directly upload the file to blob storage and reduce how many places the file gets copied.
There are also some 3rd party controls that you can use to do this as well.
More Information
The problem with the ASP.NET FileUpload control is that it writes the file to a temp folder during upload. The folder that is used in Windows Azure is limited to 100 MB so if you try to write something larger then that, it will fail.
I haven’t tested this, but if you have multiple users uploading data at the same time, you could see the same problem. For example, if 15 users all upload a 10 MB file at the same time, the temp folder will probably fill up and give the same error.
Note: there is a setting that you may be temped to use which is the tempDirectory attribute off the compilation element. If you try to set this to anything, it will cause your Web Role to not start up.