目的:我想只要有人创建了一个新的任务,验证它,如果需要取消。远程事件预处理器不工作
环境详细信息:目前我正在使用Project Server 2013并尝试使远程事件处理程序正常工作。远程事件处理程序中WCF服务,这是在ASP.NET Web应用程序,与Project Server一起在IIS上承载的Windows服务器上。
目前,我有我的应用程序2个WCF服务:
ProjectEventReceiver.svc:
namespace EventHandlersTest { public class ProjectEventReceiverDemo : IProjectEventReceiverRemote { ... public ProjectPreEventArgs OnCreatingRemote(PSContextInfo contextInfo, Guid eventHandlerUid, ProjectPreEventArgs e) { if (/*invalid project name for example*/) { e.Cancel = true; } return e; } ... } }
这一个是在SharePoint管理中心Administation绑定 - > - >服务器侧面事件处理程序 - >
Project - Creating
这样的事件:类名称:EventHandlersTest.ProjectEventReceiverDemo
地址:http://localhost:6569/EventHandlersTest/ProjectEventReceiver.svc
网址是好的,我可以访问.cvs文件浏览器。 这个处理程序完美地工作(例如,当我创建一个名称无效的新企业项目 - 事件被捕获,创建被取消,我可以看到我的自定义日志显示类已构建,方法
OnCreatingRemote
被调用)。
现在与第二服务本身的问题:
TaskEventReceiver.svc:
namespace EventHandlersTest { public class TaskEventReceiverDemo : IStatusingEventReceiverRemote { ... public StatusCreateTaskPreEventArgs OnTaskCreatingRemote(PSContextInfo contextInfo, Guid eventHandlerUid, StatusCreateTaskPreEventArgs e) { // just cancel everything for now e.Cancel = true; return e; } ... } }
这一个是绑定到事件
Statusing - TaskCreating
像这样:类名称:EventHandlersTest.TaskEventReceiverDemo
地址:http://localhost:6569/EventHandlersTest/TaskEventReceiver.svc
再次,网址是正确的 - 我可以在浏览器中访问它。
现在问题的流程:我创建了一个SharePoint任务列表项目,然后我去那里,点击New Task
,填写所需的名称 - 它创建的任务。没有接收到事件时,不创建TaskEventReceiverDemo
类的对象和不调用方法OnTaskCreatingRemote
。
我不确定IStatusingEventReceiverRemote
是否是一个正确的界面,因为reference中没有真正有用的描述,所以我只根据方法名进行了假设。
我也尝试实施IResourceEventReceiverRemote
,尤其是方法OnCreatingRemote
并将其绑定到Resource - OnCreating
- 结果相同(并且它似乎是逻辑因为任务不是资源)。
问题:有人可以澄清一下,当我创建一个任务,如问题流程中所描述的那样,会引发什么事件的名称?或者,也许我做错了什么,不能弄明白。
在此先感谢。