部署sharepoint事件接收器时“由于对象的当前状态,操作无效”

时间:2012-02-17 11:38:04

标签: c# visual-studio-2010 sharepoint exception

我有一个简单的事件接收器,当我创建一个构造函数时,我在部署步骤中得到了错误,我在功能,Elements.xml文件和我的代码中仔细检查了事件接收器范围,奇怪的是当我删除构造函数时(我使用服务定位器来获取我的实现类的实例)它工作正常。

我的代码是这样的:

    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);
   }

这是我的stackTrace:

  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...

1 个答案:

答案 0 :(得分:1)

如果您无法使用SharePoint Alert功能,并且您不需要能够以最少的努力发送电子邮件的工作流,则应删除构造函数并将其代码放入ItemAdded方法。