Задумывались ли вы о том, чтобы вызывать метод контроллера действий асинхронно, даже с возможностью вызова нового потока, чтобы сохранить документ, чтобы веб-страница не ожидала ответа и не рисковала временем ожидания.
Используйте вызов jquery ajax для вызова вашего контроллера и параллельной библиотеки задач для сохранения документа.Вызов ajax может что-то сделать с обработчиком успеха / сбоя, который вызывается после получения ответа.
Выглядит примерно так
$(function() {
$('selector').click(function() {
var id = $('selector for id').val()
$.ajax({
type: "POST",
url: "/Controller/VideoUpload",
data: { memberId: id },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("selector for status").(msg);
},
});
});
});
Метод действия будет выглядеть примерно так, хотя это может быть не совсем точно.Вам также не обязательно делать это, поскольку запись ajax должна позволять запускать метод без браузера, ожидающего ответа.
[HttpPost]
public ActionResult VideoUpload(int memberId)
{
var status = Task.Factory.StartNew(() => _docRepo.SaveDocument(DocumentType.Video, Request.Files, memberId));
return Json(new { success = true, status = status.Result});
}