다른 필드의 변경 내용을 기반으로 한 프로젝트의 사용자 지정 필드를 업데이트하는 OnPublished 이벤트 처리기에서 작업하고 있습니다.Project Server 2010 이벤트 처리기
내가 오류
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);
프로젝트가 체크 된 상태로, 우리는 checking- 있습니다에있을 때 우리는 코드를 실행하는 것입니다 새로운 SessionID를 할당하고 할당합니다. 그러나 이벤트 처리기가 시작되면 프로젝트가 이미 체크 아웃되었습니다. 그럼 어떻게 SessionID를 얻습니까? 나는 그것이 코드가 깨지는 부분이라고 생각한다.
@melan 응답에 감사드립니다. 필자의 경우 사용자는 Project Pro와 PWA (50-50)를 사용합니다. 게시 된 프로젝트의 플래그 설정 -이 일은 내 마음을 넘어 섰지 만 결코 그렇게 할 방법을 찾지 못했습니다. – sid1385