2017-03-07 70 views
1

目的:我想只要有人創建了一個新的任務,驗證它,如果需要取消。遠程事件預處理器不工作

環境詳細信息:目前我正在使用Project Server 2013並嘗試使遠程事件處理程序正常工作。遠程事件處理程序中WCF服務,這是在ASP.NET Web應用程序,與Project Server一起在IIS上承載的Windows服務器上。

目前,我有我的應用程序2個WCF服務:

  1. 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 - 結果相同(並且它似乎是邏輯因爲任務不是資源)。

    問題:有人可以澄清一下,當我創建一個任務,如問題流程中所描述的那樣,會引發什麼事件的名稱?或者,也許我做錯了什麼,不能弄明白。

    在此先感謝。

    回答

    0

    看起來像我發現一個aswer我已經創建了覆蓋在命名空間Microsoft.Office.Project.Server.Events所有接口所需的所有服務,並在每一個實現的方法也記錄到文件(至少部分之一)

    之後我訂購了SP Central Admin的所有服務器端事件處理程序,並開始使用SharePoint任務列表項目類型的CRUDing任務進行播放。

    我希望這可以通過我的日誌記錄向我透露所需的方法。但是,結果令人驚訝:日誌中沒有任何內容,這意味着SharePoint任務列表項目的CRUD任務不會觸發任何事件

    順便說一句,處理程序是正確的,訂閱正確,因爲我可以看到日誌說創建項目。而對於其他類型的項目 - 企業項目 - 任務事件實際上解僱,是顯而易見的:Statusing - TaskCreating

    我將不勝感激,如果有人可以解釋我爲什麼事件,但不是在創造企業項目任務做火SP任務列表之一,因爲我只是部分回答了我的問題。