Asp.Net WebApi Ошибка при скачивании больших файлов
Есть следующий метод
[Route("{id:int}/attachment"), HttpGet]
public HttpResponseMessage GetAttachment([FromUri]int id)
{
var result = Request.CreateResponse(HttpStatusCode.OK);
var fileName = "Имя файла";
var mimeType = MimeMapping.GetMimeMapping(fileName);
try
{
var path = "Путь к файлу";
result.Content = new ByteArrayContent(File.ReadAllBytes(path));
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{ FileName = HttpUtility.UrlPathEncode(fileName) };
result.Content.Headers.Add("Content-Type", mimeType);
return result;
}
catch (Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e.Message);
}
}
скачивание файла инициируется отправкой ajax запроса на соответствующий endpoint webapi, спустя некоторое время после отправки запроса в консоли разработчика запрос приобретает статус (failed)net::ERR_CONNECTION_RESET, в системном журнале операционной системы нашел следующую ошибку
ArithmeticException Переполнение или потеря точности в арифметической операции.
http://localhost:58863/api/operations/22461/items/226512/attachment
как выяснилось проблема повторяется только для больших файлов, в данном случае размер файла составляет 1.4ГБ.
Подскажите как реализовать скачивание больших файлов
Источник: Stack Overflow на русском