2010-10-23 3 views
7

Я попытался установить executeTimeout в web.config для приложения asp.net mvc. executeTimeout не работает на asp.net mvc

<location path="Home/Index"> 
    <system.web> 
     <httpRuntime executionTimeout="5"/> 
    </system.web> 
    </location> 

любой использовал Thread.sleep в индекс акции

public ActionResult Index() 
     { 
      Thread.Sleep(30000);    
      return View(); 
     } 

также я набор отладки complilation к "ложным". после действия сна около 30 секунд, а исключение «тайм-аут запроса» не выбрасывается, и представление было успешно отображено.

Кто-нибудь знает, как сделать выполнениеTimeout работать в asp.net mvc?

+0

возможно дубликат [ASP.NET MVC и httpRuntime ExecutionTimeout] (http://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout) –

ответ

4

Вам необходимо выполнить следующие действия:

  1. имя домена не локальный (для проверки тайм-аута вы должны использовать «YourComputerName» вместо «localhost»).
  2. Проект скомпилирован в режиме деблокирования.
  3. <compilation debug="false">

Тогда же, подумайте об этом:

Внутренне ASP.NET использует таймер, чтобы вызвать процесс запроса от отказа. Этот таймер запускается один раз каждые 15 секунд, поэтому, если executionTimeout установлен на 3 секунды, на самом деле запрос может быть отключен в любое время от 3 секунд до 18 секунд.

При запуске таймера поток ThreadPool используется для проверки всех запросов. Те, которые имеют время ожидания, отправляются ThreadAbortException, вызывая Abort в потоке, выполняющем запрос.

Примечание: Имейте в виду, что ThreadAbortException может отслеживаться только управляемым кодом. Поэтому, если поток вызывается некоторыми неуправляемыми функциями, поток не будет прерван, и поэтому тайм-аут не будет применяться до тех пор, пока выполнение не вернется в управляемый мир. Это может быть произвольная длина задержки в зависимости от того, что делает неуправляемый код.

Подробнее: http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/