На нашем веб-сайте ASP.NET MVC, размещенном в Azure App Service, мы хотели бы установить тайм-аут для запросов, которые занимают больше 15 секунд. Вот простое действие, которое всегда занимает больше времени, чем за 15 секунд (т.е. бесконечный цикл), который мы тестировали с ...Azure App Service Set Custom ConnectionTimeout в ApplicationHost.config
public ActionResult TimeoutTest()
{
var i = 1;
while (true)
{
i++;
}
return new HttpStatusCodeResult(200);
}
По умолчанию, если я делаю GET на это действие в браузере, я После двух минут вы получите сообщение об ошибке «500 - время ожидания запроса», что согласуется с the "connectionTimeout" default setting in the webLimits section of ApplicationHost.config.
Итак ... если я ошибаюсь, этого должно быть достаточно, чтобы изменить это значение connectionTimeout на 15 секунд. Для этого я понимаю, что для файла ApplicationHost.config (XDT) необходимо использовать подход, основанный на преобразовании, как описано here.
Я сделал это с помощью следующего applicationHost.xdt файла ...
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.applicationHost>
<webLimits xdt:Transform="SetAttributes(connectionTimeout)" connectionTimeout="00:00:15"/>
</system.applicationHost>
</configuration>
... после чего я добавил файл в нужном месте (d: /home/site/applicationHost.xdt). Я перезагрузил мой сайт и увидел в журнале, который был успешно применен преобразующим:
2016-04-20T08:40:44 Start 'site' site extension transform
2016-04-20T08:40:44 StartSection Executing SetAttributes (transform line 4, 18)
2016-04-20T08:40:44 on /configuration/system.applicationHost/webLimits
2016-04-20T08:40:44 Applying to 'webLimits' element (no source line info)
2016-04-20T08:40:44 Set 'connectionTimeout' attribute
2016-04-20T08:40:44 Set 1 attributes
2016-04-20T08:40:44 EndSection Done executing SetAttributes
2016-04-20T08:40:44 Successful 'D:\home\site\applicationHost.xdt' site extension transform
2016-04-20T08:40:44 sandboxproc.exe complete successfully. Ellapsed = 316.00 ms
[Изменить]: Я также проверил ApplicationHost.config непосредственно после преобразования, и новое значение есть:
...
</sites>
<webLimits connectionTimeout="00:00:15" />
</system.applicationHost>
<system.webServer>
<asp>
...
Несмотря на все это, если я снова ударил свой метод действия, он все равно истекает через две минуты вместо 15 секунд.
Мой вопрос: Кто-нибудь знает, почему этот тайм-аут не соблюдается?
Я знаю this post, который выглядит так, как будто он принял тот же подход (и, похоже, работал?).
Спасибо, да, я знаю, что один тоже. Он также установлен на 15 секунд и, похоже, не имеет значения. – sammy34
Я добавил более подробно выше. –