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