Я столкнулся с каким-то ограничением в ASP.NET. Я уменьшил проблему до примера проекта в ASP.NET MVC Project (создан с помощью Visual Studio 2010 и .NET 4), и проблема по-прежнему возникает:
В контроллере MVC у меня есть метод, который обеспечивает загрузку файла:
public ActionResult DownloadBigFile()
{
string file = @"C:\Temp\File.txt";
var readStream = new FileStream(file, FileMode.Open, FileAccess.Read);
return File(readStream, "text/plain", "FILE");
}
Если размер файла меньше 1 ГБ, загрузка работает нормально, выше 1 ГБ выдается исключение: "Переполнение или недостаточный объем в арифметической операции" со следующими сведениями:
Overflow or underflow in the arithmetic operation.
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.ArithmeticException: Overflow or underflow in the arithmetic operation.
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:
[ArithmeticException: Overflow or underflow in the arithmetic operation.]
[HttpException (0x80004005): An error occurred while communicating with the remote host. The error code is 0x80070216.]
System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect) +4081269
System.Web.Hosting.IIS7WorkerRequest.FlushCore(Boolean keepConnected, Int32 numBodyFragments, IntPtr[] bodyFragments, Int32[] bodyFragmentLengths, Int32[] bodyFragmentTypes) +12233777
System.Web.Hosting.IIS7WorkerRequest.FlushCachedResponse(Boolean isFinal) +847
System.Web.HttpResponse.UpdateNativeResponse(Boolean sendHeaders) +1110
System.Web.HttpRuntime.FinishRequestNotification(IIS7WorkerRequest wr, HttpContext context, RequestNotificationStatus& status) +336
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009
Проблема воспроизводима, но я не нашел никакой информации об этом поведении. Как я могу предотвратить подобные проблемы или как управлять большими загрузками (> 1 ГБ)?