別のフィールドの変更に基づいてプロジェクトの 1 つのカスタム フィールドを更新する 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 を取得するにはどうすればよいでしょうか。コードが壊れているところだと思います。