Ошибка при попытке перебрать экземпляры рабочих процессов в SharePoint 2013/2016 с использованием кода на стороне сервера (C#)

Я уже пару недель бьюсь головой об стену. По сути, у нас есть полнофункциональная среда SharePoint 2013, которая используется уже несколько лет. Пользователи все время используют рабочие процессы SP Designer, поэтому я знаю, что WFM настроен правильно на некотором базовом уровне. Мне было поручено создать панель мониторинга, которая отображает состояние всех рабочих процессов, которые в настоящее время находятся в системе. Я предположил, что это будет очень просто, поскольку у меня уже есть сценарий PowerShell, который работает без проблем, поэтому я приступил к созданию визуальной веб-части и преобразовал свой сценарий PowerShell в эквивалентный код C#.

Во время работы веб-части в режиме отладки я получаю следующую ошибку, как только код пытается получить доступ к.Instances WorkflowManagementClient.

У вызывающей стороны нет необходимых разрешений, необходимых для этой операции. Предоставленные разрешения: Нет. Требуемые разрешения: ReadScope. Заголовки HTTP, полученные от сервера - ActivityId: 0df3cc9f-f614-4195-9b4d-47628cd445b3. NodeId: MyServerName. Область: /SharePoint/default/6b1ed985-5d6d-48a0-80ac-9a564c90477d/19d433e8-971f-4165-a1c5-95924e7680ee. Идентификатор активности клиента: 9f94749e-6bce-d03d-c643-d15708dbd4c1.

Весь поиск, который я до сих пор проводил, приводит к аналогичным ошибкам, когда люди пытаются зарегистрировать службу рабочего процесса с помощью командлета Register-SPWorkflowService. Это не проблема, с которой я сталкиваюсь. Как я уже говорил, рабочие процессы на самом деле работают нормально и были в течение многих лет.

Мой код выполняется с использованием SPSecurity.RunWithElevatedPrivileges, как я это делал со многими другими решениями в прошлом, и учетная запись, с которой я отлаживаю, - это та же учетная запись, в которой нет проблем при запуске сценария PowerShell, который предоставляет ту же информацию без каких-либо проблем. Пожалуйста помоги.

Вот соответствующий код, который не работает:

foreach (SPList list in web.Lists)
                        {
                            WorkflowServicesManager wfm = new WorkflowServicesManager(web);
                            WorkflowSubscriptionService sub = wfm.GetWorkflowSubscriptionService();

                            WorkflowSubscriptionCollection subscriptions = sub.EnumerateSubscriptionsByList(list.ID);

                            Uri wfmcURI = new Uri(wfMgrEndpoint + wfm.ScopePath);
                            WorkflowManagementClient wfmc = new WorkflowManagementClient(wfmcURI);
                            InstanceManager instMgr = wfmc.Instances;

                            if (instMgr.GetCount() > 0)

В частности, происходит сбой в строке instMgr.GetCount()

0 ответов

Другие вопросы по тегам