Имитация тайм-аута на ASP.NET MVC - PullRequest
3 голосов
/ 20 июля 2011

Проблема:

Мне нужно создать веб-проект с контроллером, который истекает.

Что я сделал:

  • Создание нового веб-приложения
  • Очистите файл web.config и введите следующие значения:

.

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpRuntime executionTimeout="1" />
        <compilation debug="false" />
        <httpModules>
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        </httpModules>
    </system.web>
</configuration>
  • Запишите следующий код в контроллер:

.

public class DefaultController : Controller
{
    public EmptyResult Index()
    {
        System.Threading.Thread.Sleep(3000);
        Response.Write("ScriptTimeout: " + HttpContext.Server.ScriptTimeout);
        return new EmptyResult();
    }
}

При запуске сервер спит в течение 3 секунд, а затем возвращает ответ без ошибки тайм-аута.Значение ScriptTimeout равно 1.

Вопрос:

Есть идеи, что пошло не так?

Ответы [ 2 ]

1 голос
/ 07 марта 2013

Атрибут executionTimeout в элементе <httpRuntime/> учитывается, только если debug="false" в элементе <compilation/>.

Попробуйте удалить атрибут отладки или явно установить для него значение false. Конечно, вам придется запустить приложение без отладки, чтобы протестировать его.

Подробнее см. http://msdn.microsoft.com/en-gb/library/vstudio/e1f13641(v=vs.100).aspx.

1 голос
/ 20 июля 2011

Вы хотите 408 Request Timeout код статуса HTTP?

public ActionResult Index()
{
    return new HttpStatusCodeResult(408);
}

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...