Есть ASP.NET MVC сайт, который хостится на reg.ru
есть на входе файл Excel, содержимое файла нужно загрузить через сайт в БД. Возникает проблема скорей всего с таймаутом соединения, появляется "ERR_CONNECTION_RESET" - Не удается получить доступ к сайту. Файл весит 8МБ, количество записей 350 000. (может быть больше около 800 тыс).
В Web.config у меня на данный момент указано
<httpRuntime maxRequestLength="16384" executionTimeout="3600"/>
Метод отвечающий за загрузку:
[HttpPost]
public ActionResult UploadLsGis(HttpPostedFileBase upload2)
{
List<LsKvitGis> l = new List<LsKvitGis>();
if (upload2 != null && upload2.ContentLength > 0)
{
int SN = 1;
var fileName = Path.GetFileName(upload2.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/Files"), fileName);
upload2.SaveAs(path);
using (XLWorkbook workBook = new XLWorkbook(path))
{
var ws = workBook.Worksheet(1);
int lastrow = ws.LastCellUsed().Address.RowNumber;
while (SN<=lastrow)
{
l.Add(new LsKvitGis {
LS = ws.Row(SN).Cell(1).Value.ToString(),
LSGis = ws.Row(SN).Cell(2).Value.ToString()
});
SN++;
}
}
db.lsKvitGiss.RemoveRange(from s in db.lsKvitGiss select s); //удаляю что было раньше
db.lsKvitGiss.AddRange(l); // добавляю
db.SaveChanges(); // сохраняю
ViewBag.Message = "Файл с ЛС ГИС загружен";
}
return View("Index");
}
На локалхосте загружается файл целиком без проблем. На продакшене грузятся небольшие файлы (3800 строк загрузил), большие - не грузятся.
Выяснил что хостер ограничивает ресурсы ( служба поддержки прислала логи, действительно увидел что вылетает и по ЦПУ и по ОП)
Пока переходить на выделенный сервер не получается, нужно придумать как обойти ограничение сервера.
Возможно есть мысли?
Можно конечно бить файлы на более мелкие на стороне пользователя, но это тоже не выход, заказчик на такое не хочет соглашаться. Если бить при загрузке...