Рис.1. Неожиданная ошибка Project Server 2010 при изменении документаРис.1. Неожиданная ошибка Project Server 2010 при изменении документа

При изменении свойств документа в библиотеке документов на сайте проекта в Project Server 2010 пользователь с уровнем доступа «Полный доступ» получал сообщение об ошибке (Рис.1).

Рис.1. Неожиданная ошибка Project Server 2010 при изменении документаРис.1. Неожиданная ошибка Project Server 2010 при изменении документа

Рис.1. Неожиданная ошибка Project Server 2010 при изменении документа

Ошибка у пользователя воспроизводилась в разных браузерах, потому идею кэша или плагинов отбросил сразу. Потому отправился в логи SharePoint, тем более под рукой есть время и CorrelationID.

В логах по CorrelationID из найденных записей одна содержала информацию об ошибке:

System.Web.Services.Protocols.SoapException: ProjectServerError(s) LastError=GeneralSecurityAccessDenied Instructions: Pass this into PSClientError constructore to access all error information  

 at Microsoft.Office.Project.Server.WebServiceProxy.Security.CheckUserProjectPermission(Guid projectUid, Guid categoryPermissionUid)   

 at Microsoft.Office.Project.PWA.CustomFieldWebControls.CustomPWALinkField.OnLoad(EventArgs e)   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Control.LoadRecursive()   

 at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

 

Поскольку это не SharePoint в чистом виде, а Project Server, то решил проверить, какие права у пользователя на управление проектами. Зашел «Параметры» / «Параметры сервера» / «Управление пользователями» и попытался найти пользователя. Результатов не оказалось.

Потом вспомнил, что для пользователей Project Server была отключена синхронизация с Active Directory. Потому пришлось добавить пользователя вручную (https://project.server.url/_layouts/PWA/Admin/AddModifyUser.aspx?returnLocation=0).