2012-02-17 49 views
3

所以我有一個簡單的事件接收器,當我創建構造函數時我在部署步驟中遇到錯誤,我再次檢查事件接收器作用域在Elements.xml文件和我的代碼中,奇怪的是當我刪除構造函數(我使用服務定位器來獲取我的實現類的實例)時,它工作正常。當部署sharepoint事件接收器時,「操作無效,由於對象的當前狀態」

我的代碼是這樣的:

private INotificationService iNotificationService; 
    public CongeER() 
    { 
     SPSite currentSite = SPContext.Current.Site; 
     IServiceLocator locator = SharePointServiceLocator.GetCurrent(currentSite); 

     try 
     { 
      iNotificationService = locator.GetInstance<INotificationService>(); 
     } 
     catch (System.Exception ex) 
     { 
      System.Console.WriteLine(ex.Message); 
     } 
    } 

    public override void ItemAdded(SPItemEventProperties properties) 
    { 
     iNotificationService.NotifyByMail(); 
     base.ItemAdded(properties); 
    } 

這裏是我的堆棧跟蹤:

Feature Activation: Threw an exception, attempting to roll back. 
    Exception: System.InvalidOperationException: 
    L'opération n'est pas valide en raison de l'état actuel de l'objet.  
    à Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionContentTypeAndEventReceiverBindings(SPFeaturePropertyCollection props, SPSite site, SPWeb web, Boolean fForce)  
    à Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionElements(SPFeaturePropertyCollection props, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce)  
    à Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boo... 
+0

您是否嘗試過從站點用戶界面激活該功能? – 2012-02-17 12:28:15

+0

是的,我做了,發生以下情況:運行時錯誤 說明:服務器上發生應用程序錯誤。此應用程序的當前自定義錯誤設置可防止查看應用程序錯誤的詳細信息。 – Mosbah 2012-02-17 13:16:42

+0

這似乎是以某種方式通知一個新的假期。您能否告訴我業務場景,以便我能爲您提供符合SharePoint最佳實踐的解決方案? – 2012-02-17 13:43:50

回答

1

如果您不能使用SharePoint警報功能,你並不需要一個工作流程,也可以發送電子郵件盡最大的努力,你應該刪除構造函數並將其代碼放入ItemAdded方法中。

+0

如果我從構造函數中移動代碼,將調用ItemAdded()函數,但我無法從serviceLocator獲取新實例,感謝您的時間。 – Mosbah 2012-02-17 14:38:12

+0

什麼是錯誤? – 2012-02-17 14:47:39

+0

未將對象引用設置爲對象的實例。 – Mosbah 2012-02-17 14:52:04

相關問題