事件处理程序晚于OnPublished

时间:2016-01-07 15:03:11

标签: csom project-server

在创建新项目时,是否有比“OnPublished”-event更晚的Project Server事件处理程序事件?

发布事件发生的时间似乎要早。加载项目FieldValues不起作用。它们总是空的。

PublishedProject project = projCollection.First().IncludeCustomFields;
projectContext.Load(project);
projectContext.Load(project.IncludeCustomFields);
CustomFieldCollection fields = project.CustomFields;
projectContext.Load(fields);
projectContext.ExecuteQuery();

Dictionary<string, object> fieldValues = project.FieldValues;

为现有项目执行相同的代码时,一切正常。

相反,我可以在x秒内执行超时但我更喜欢以后的服务器事件,其中所有值都已设置。

修改:

在执行此操作之前,我的其他代码似乎有问题。自定义字段和FieldValues现在正确加载。

但之后加载projectSiteUrl的时间仍然很早。 ProjectSiteUrl保持为空。

projectContext.Load(project, p => p.ProjectSiteUrl);
projectContext.ExecuteQuery();

2 个答案:

答案 0 :(得分:0)

我使用PSI而不是CSOM和&#34; ProjectSiteUrl&#34;首次发布(OnPublished事件)后为null。 对于第一次发布,我使用了WssInteropEventReceiver类或接口中的OnWssWorkspaceCreated事件。

答案 1 :(得分:0)

项目完全发布后,ReportingEventReceiver类的OnProjectChangedRemote事件将被触发。

创建新项目并完成创建过程后,将触发ReportingEventReceiver类的OnProjectCreatedRemote事件。