Я работаю над обработчиком событий OnPublished, который будет обновлять одно настраиваемое поле проекта на основе изменений в другом поле.
я получаю сообщение об ошибке
Event Handler for event \ProjectPublished\ of type \PS.UpdateProjectStatusChangeDate.EventHandlerUpdateField\ threw an exception: ProjectServerError(s) LastError=CICOCheckedOutToOtherUser Instructions: Pass this into PSClientError constructor to access all error information
это код
//loading project data from server
//Every change on this dataset will be updated on the server!
ProjectDataSet projectDs = projectClient.ReadProject(projectId, projectSvc.DataStoreEnum.WorkingStore);
foreach (projectSvc.ProjectDataSet.ProjectRow row in projectDs.Project)
{
if (row.PROJ_SESSION_UID != null)
{
sessionId = row.PROJ_SESSION_UID;
break;
}
}
//send the dataset to the server to update the database
bool validateOnly = false;
Guid jobId = Guid.NewGuid();
projectClient.QueueUpdateProject(jobId, sessionId, projectDs, validateOnly);
В отличие от других ответов, в которых мы запускаем код, когда проект находится в зарегистрированном состоянии, мы извлекаем и назначаем новый SessionID. Но когда срабатывает обработчик событий, проект уже проверен. Итак, как мне получить SessionID. Я думаю, что это то, где код ломается.