Службы IIS запрос тайм-аут на длительную эксплуатацию ASP.NET



Я испытываю тайм-аут запроса от IIS, когда я запускаю длительную операцию. За кулисами мой ASP.NET приложение обрабатывает данные, но количество обрабатываемых записей велико, и поэтому операция занимает много времени.



однако, я думаю, что IIS тайм-аут сессии. Это проблема с IIS или ASP.NET сессия?



спасибо заранее

1020   4  

4 ответов:

если вы хотите продлить время, разрешенное для ASP.NET скрипт для выполнения затем увеличить Server.ScriptTimeout значение. Значение по умолчанию-90 секунд для .NET 1.x и 110 секунд для .NET 2.0 и более поздних версий.

например:

// Increase script timeout for current page to five minutes
Server.ScriptTimeout = 300;

это значение также может быть настроены в ваш на httpRuntime элемент настройки:

<!-- Increase script timeout to five minutes -->
<httpRuntime executionTimeout="300" 
  ... other configuration attributes ...
/>

enter image description here

обратите внимание, в соответствии с Примечание:

" этот тайм-аут применяется только в том случае, если атрибут debug в компиляции элемент является ложным. Поэтому, если атрибут debug имеет значение True, вы делаете не нужно устанавливать этот атрибут на большое значение, чтобы избежать завершение работы приложения во время отладки."

если вы уже сделали это, но обнаружили, что ваша сессия истекает потом увеличить ASP.NET HttpSessionState.Timeout значение:

например:

// Increase session timeout to thirty minutes
Session.Timeout = 30;

это значение также может быть настроены в ваш на sessionState элемент настройки:

<configuration>
  <system.web>
    <sessionState 
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

если ваш сценарий занимает несколько минут для выполнения и есть много одновременных пользователей, то рассмотреть возможность изменения страницы на Асинхронные Страницы. Это повысит масштабируемость вашего приложения.

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

отличный и исчерпывающий ответ @Kev!

поскольку я долго обрабатывал только одну страницу администратора в приложении WebForms, я использовал опцию кода. Но чтобы разрешить временное быстрое исправление на производстве, я использовал версию конфигурации в <location> тег в web.конфиг. Таким образом, моя страница администратора/обработки получила достаточно времени, в то время как страницы для конечных пользователей и такие сохраняли свое старое поведение тайм-аута.

ниже я дал конфигурацию для вас гуглеров, нуждающихся в том же быстром исправлении. Вы должны, конечно, используйте другие значения, чем мой пример "4 часа", но DO обратите внимание, что сессия timeOut В минут, в то время как запрос executionTimeout - в секундах!

и - поскольку 2015 год уже не quickfix вы должны использовать .Объем 4.5 л!--13-->async / await теперь, если это вообще возможно, вместо асинхронной страницы .NET 2.0, которая была современной, когда Кев ответил в 2010 году :).

<configuration>
    ... 
    <compilation debug="false" ...>
    ... other stuff ..

    <location path="~/Admin/SomePage.aspx">
        <system.web>
            <sessionState timeout="240" />
            <httpRuntime executionTimeout="14400" />
        </system.web>
    </location>
    ...
</configuration>

я публикую это здесь, потому что я потратил на это 3 и 4 часа, и я нашел только такие ответы, как те, что выше, которые говорят, что добавляют executionTime, но это не решит проблему в случае, если вы используете ASP .NET Core. Для него, это будет работать:

в интернете.конфигурационный файл, добавьте на aspNetCore узел.

<system.webServer>
  <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) />
</system.webServer>

в этом примере я устанавливаю значение в течение 10 минут.

ссылка: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module

удалить ~ символ в месте так что

path="~/Admin/SomePage.aspx"

становится

path="Admin/SomePage.aspx"

Comments

    Ничего не найдено.