2016-01-06 2 views

ответ

3

Лучший способ я нашел до сих пор, чтобы справиться с давно работает скрипт (если приложение просто не может избежать один), чтобы во-первых, создать обработчик асинхронной:

public async Task<IActionResult> About() 
    { 
      var cts = new CancellationTokenSource();    
      cts.CancelAfter(180000); 
      await Task.Delay(150000, cts.Token); 
     return View(); 
    } 

В фрагменте выше I добавили токен отмены, чтобы сказать, что мой метод Async должен отменить через 180 секунд (хотя в этом примере он никогда не будет задерживаться дольше 150 секунд) Я добавил таймаут, чтобы убедиться, что есть ограничение на то, как долго мой скрипт может запустить.

Если вы запустите это, вы получите сообщение об ошибке HTTP 502.3, так как на httpPlatform существует 00:02:00.

Чтобы продлить этот тайм-аут, перейдите в файл web.config внутри папки wwwroot и добавьте свойство requestTimeout = "00:05:00" в элемент httpPlatform. Пример:

<httpPlatform requestTimeout="00:05:00" processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/> 

Долгий срок работы сценария теперь должен работать.

Это означает, однако, что любой запрос займет от 5 минут до таймаута, поэтому вам нужно будет убедиться, что вы используете трюк CancellationToken, чтобы ограничить любые запросы Async, которые у вас есть в приложении. В предыдущих версиях MVC у нас был атрибут AsyncTimeOut, который вы могли бы добавить в контроллер, но, похоже, это было разрезано в MVC6 See GitHub aspnet/mvc Issue #2044

+0

Благодарим вас за очень интересный ответ, но это неприемлемо для моей проблемы: «Это означает, однако, что любой запрос займет 5 минут до тайм-аута ...» Мне нужно только программное решение без вмешательства web.config. –

+1

Насколько мне известно, программный способ сделать это не существует из-за того, что IIS является прокси-сервером DNX. Если вы не отредактируете это значение, запрос будет всегда 502 через 2 минуты –

+0

@MartinBeeby. Добавление этой строки теперь приводит к сбою приложения при запуске, по-видимому, нет узла ' 'по умолчанию –

 Смежные вопросы

  • Нет связанных вопросов^_^