Таймауты с длительным запуском ASP.NET MVC Core Controller Метод HTTPPost

Я использую вызов ajax на страницах просмотра ASP.NET Core MVC

MyView.cshtml

  $.ajax({ processData: false, contentType: false, data: new FormData(this), type: $(this).attr('method'), url: $(this).attr('action'), cache: false, success: function (data) { $('#mydiv).html(data); $('#bootstrapModal).modal('show'); 

Способ управления controllerом ”

  [HttpPost] [ValidateAntiForgeryToken] public async Task MyLongRunningMethod(MyViewModel viewModel) { await MyProcess.Longprocess1(); await MyProcess.Longprocess2(); await MyProcess.Longprocess3(); await MyProcess.Longprocess4(); return PartialView("_MyPartialPage"); } 

Это работает, но имеет только проблему для долгого процесса. Я получаю следующую ошибку во время режима отладки, когда процесс занимает больше, чем около 2 минут

введите описание изображения здесь

Я понимаю, что это связано с истечением времени ожидания

в предыдущих версиях ASP.NET MVC вы, вероятно, можете увеличить таймаут в своем действии controllerа asp.net.

 HttpContext.Current.Server.ScriptTimeout = 90000; 

Однако этого не существует в ASP.NET Core

Я хочу увеличить таймаут для отладки и развертывания для конкретного controllerа asp.net.

Для производства я могу установить его глобально в файле web.config , добавив requestTimeout в существующий тег httpPlatform. например, в течение 10 минут

 <httpPlatform requestTimeout="00:10:00" .... 

Аналогичный вопрос был задан, но ответ, дающий использование CancellationToken но, читая его, кажется, что он не может помочь мне с таймаутами.

  1. Как установить таймауты в режиме отладки Visual Studio 2015, как я могу это сделать, когда я его развертываю?
  2. Есть ли один тайм-аут controllerа, как в ASP.NET 4 ?

Установка RequestTimeout="00:20:00" в теге aspNetCore и развертывание сайта приведет к нему aspNetCore .

Теперь проблема возникает только при запуске из режима отладки Visual Studio, но не в режиме деблокирования.

Обратите внимание: в ASP.NET RTM тэг httpPlatform был заменен aspNetCore в aspNetCore web.config

Пример для ядра ASP.NET

          

Но в 2.0 нет файла web.config в проекте. Он генерируется автоматически.

Я решил проблему, добавив .UseKestrel(...) в функцию BuildWebHost в Program.cs следующим образом:

 public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .UseKestrel(o => { o.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(10); }) .Build(); } 

В моем случае у нас по-прежнему была ошибка времени ожидания 502 через 2 минуты, даже после обновления параметра requestTimeout . Оказалось, что пустельга имеет 2-минутный тайм-аут, который нужно было переопределить:

 var host = new WebHostBuilder() .UseKestrel(o => { o.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30); } ) 
  • Ошибка Android: Не удалось установить * .apk на устройстве *: таймаут
  • Прокси-сервер с хромовыми носками через тайм-ауты пересылки ssh
  • Interesting Posts

    Бесплатное восстановление раздела NTFS после диска было отформатировано в Mac OS X

    Получение позиции мыши в c #

    NSPredicate: фильтрация объектов по дням свойства NSDate

    Метод сравнения нарушает его общий контракт в Java 7

    Windows 7: не удается привязать приложение к панели задач

    Как использовать относительные пути без включения имени корневого контекста?

    Вызов `getDrawingCache` возвращает значение null при включении прокрутки

    Реляционная firebase database проектирует несколько типов пользователей

    Могут ли конструкторы исключать исключения из Java?

    Почему весы нейронных сетей должны быть инициализированы случайными числами?

    GetProperties () возвращает все свойства иерархии наследования интерфейса

    Разбор JSON из URL

    как получить доступ к функции $ (this) внутри функции обратного вызова ajax

    Самый простой способ разделить строку на новые строки в .NET?

    MSBuild Script и VS2010 публикуют применение преобразования Web.config

    Давайте будем гением компьютера.