Тайм-аут решения песочницы SharePoint 2010
Есть ли способ изменить значение времени ожидания для решения песочницы SharePoint 2010? Я думаю, что по умолчанию 30 секунд. У меня есть веб-часть, которая иногда работает немного дольше. Я действительно предпочел бы не использовать фермерское решение, если смогу его избежать.
2 ответа
Найти документацию по этому вопросу было немного сложно, но я нашел это здесь. Соответствующие части это:
За запрос, с оштрафованным запросом: Существует жесткое ограничение на то, сколько времени может потребоваться решение для песочницы. По умолчанию это 30 секунд. Если изолированное решение превышает лимит, домен приложения, обрабатывающий запрос (но не изолированный рабочий процесс), завершается. Этот предел настраивается, но только через пользовательский код для объектной модели. Решения с песочницей не могут получить доступ к соответствующим частям объектной модели, поэтому никакое решение с песочницей не может изменить ограничение.
Время выполнения ЦП Абсолютный лимит этого ресурса не применяется, если он установлен выше, чем для каждого запроса, с лимитом санкционированного запроса, описанным выше. Обычно администраторы хотят поддерживать его на более высоком уровне, чтобы медленный запрос был прерван до того, как он вызовет завершение всего рабочего процесса с песочницей, включая даже хорошо работающие решения с песочницей, выполняющиеся в нем.
Следующий код можно использовать для настройки тайм-аута на запрос:
SPUserCodeService.Local.WorkerProcessExecutionTimeout = 40;
SPUserCodeService.Local.Update();
Вы должны иметь возможность регулировать время выполнения процессора примерно так:
SPUserCodeService.Local.ResourceMeasures["CPUExecutionTime"].AbsoluteLimit = 50.0;
SPUserCodeService.Local.Update();
Чтобы изменения вступили в силу, необходимо перезапустить службу изолированного кода Microsoft SharePoint Foundation.
В PowerShell вы можете настроить время ожидания, используя следующие команды:
$uc=[Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$uc.WorkerProcessExecutionTimeout = 60
$uc.ResourceMeasures["CPUExecutionTime"].AbsoluteLimit = 120
$uc.Update()