«Операция недействительна из-за текущего состояния объекта» при развертывании приемника событий sharepoint - PullRequest
3 голосов
/ 17 февраля 2012

У меня есть простой приемник событий, когда я создаю конструктор, я получил ошибку на этапе развертывания, я дважды проверил область действия приемника событий в файле Feature.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);
   }

вот мой стекTrace:

  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 Ответ

1 голос
/ 17 февраля 2012

Если вы не можете использовать функциональность SharePoint Alert и вам не нужен рабочий процесс, который также может отправлять электронную почту с минимальными усилиями, вам следует удалить конструктор и поместить его код в метод ItemAdded.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...