PSI: обновление расписания (не хватает прав) PS 2016

Вопросы, связанные с разработкой приложений для Microsoft Project

PSI: обновление расписания (не хватает прав) PS 2016

Сообщение alexeymt » 10 окт 2016, 12:08

Добрый день!

Возникла потребность записывать фактические трудозатраты в расписание через API. Сервер Project Server 2016.

Через CSOM не удалось, там вообще нет методов доступа к чужому расписанию. Через PSI вроде можно, но столкнулся с проблемой нехватки каких-то разрешений, возникает исключение с сообщением "Impersonation attempt failed. The calling identity is not a trusted account."

Может кто-нибудь подсказать, каких именно прав не хватает?

Код такой:

Код: Выделить всё
                TimePeriodDataSet period = adminClient.ReadPeriods(PeriodState.Open);//All period data set inside EMP
                string query = string.Format("WPRD_START_DATE <= '{0}' and WPRD_FINISH_DATE >= '{1}'", startDateOfWeek, startDateOfWeek);
                perioduid = new Guid(period.Tables[0].Select(query)[0]["WPRD_UID"].ToString());
                PSLibrary.PSContextInfo contextInfo = new PSLibrary.PSContextInfo(true, PSUser, ResourceUid, Guid.Empty, Guid.Empty, null, null);
                string contextInfoString = PSLibrary.PSContextInfo.SerializeToString(contextInfo);

                using (OperationContextScope scope = new OperationContextScope(timesheetClient.InnerChannel))
                {
                    WebOperationContext.Current.OutgoingRequest.Headers.Remove("PjAuth");
                    WebOperationContext.Current.OutgoingRequest.Headers.Add("PjAuth", contextInfoString);
                    WebOperationContext.Current.OutgoingRequest.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
                    SvcTimeSheet.TimesheetDataSet Mytimesheet1 = timesheetClient.ReadTimesheetByPeriod(ResourceUid, perioduid, SvcTimeSheet.Navigation.Current); // <== тут валится Exception
                    timesheetuid = new Guid(Mytimesheet1.Headers.Select("WPRD_UID ='" + perioduid + "'")[0]["TS_UID"].ToString());
                    var status = (PSLibrary.TimesheetEnum.Status)Mytimesheet1.Headers[0].TS_STATUS_ENUM;
                }
alexeymt
Белый пояс
 
Сообщения: 2
Зарегистрирован: 07 окт 2016, 10:36

Re: PSI: обновление расписания (не хватает прав) PS 2016

Сообщение Brise » 11 окт 2016, 14:09

Приветствую!
alexeymt писал(а):Возникла потребность записывать фактические трудозатраты в расписание через API. Сервер Project Server 2016.
Через CSOM не удалось, там вообще нет методов доступа к чужому расписанию.

Вы правы, CSOM не содержит административных возможностей, и всегда работает от имени текущего пользователя.

alexeymt писал(а):Через PSI вроде можно, но столкнулся с проблемой нехватки каких-то разрешений, возникает исключение с сообщением "Impersonation attempt failed. The calling identity is not a trusted account."

Может кто-нибудь подсказать, каких именно прав не хватает?

Если открыть документацию к методу ReadTimesheetByPeriod (https://msdn.microsoft.com/ru-ru/library/office/gg200618.aspx), то там перечислены необходимые привилегии, если пользователь не является владельцем расписания:
    - ViewResourceTimesheet
    - AcceptTimesheets
Вы пробовали их добавлять?
Brise
Синий пояс
 
Сообщения: 145
Зарегистрирован: 01 апр 2013, 07:52
Откуда: Санкт-Петербург

Re: PSI: обновление расписания (не хватает прав) PS 2016

Сообщение alexeymt » 11 окт 2016, 17:21

Привилегии назначены пользователю в явном виде, но, похоже, этого почему-то недостаточно
Вложения
Permissions.PNG
Permissions
Permissions.PNG (18.86 КБ) Просмотров: 783
alexeymt
Белый пояс
 
Сообщения: 2
Зарегистрирован: 07 окт 2016, 10:36

Re: PSI: обновление расписания (не хватает прав) PS 2016

Сообщение Brise » 12 окт 2016, 12:25

Если совсем ничего не помогает, можно попробовать вызвать PSI от имени владельца назначения, перед этим получив его identity через службу Claims2Windows.
Аналогично тому, как обсуждалось в этой теме
Brise
Синий пояс
 
Сообщения: 145
Зарегистрирован: 01 апр 2013, 07:52
Откуда: Санкт-Петербург


Вернуться в Разработка и программирование для Microsoft Project

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1