Как развернуть функцию с помощью SCOPE= VIESE или SCOPE= WEB для веб-частей и приемника событий соответственно?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/52085

Вопрос

У меня есть только 1 проект Visual Studio.

Он содержит 1 eventReceiver (для документированияLibrary) и нескольких веб-панель. Я определил Scope= сайт файла проекта.

Я создал 1 пользовательскую функцию в EventReceiver, которые звонки на каждом событии - это огонь, либо добавить / обновить / удалить в моем документе документа.

Когда я развернул его, вернувшись на проект, все работает нормально, но когда я создаю любую страницу или любой элемент, добавляется в мой любой CustomList, а затем eventreceiver - это пожары.Хотя он создан на документированииLibrary. Это не дает мне никакой ошибки, но я не хочу называть это снова.

Но когда я отладку проекта на F5, то я получаю ошибку в EventReceiver, потому что ее называется несколько раз означает на каждом событии.

Если я развернул Scope EventReceiver= Web, то может быть, это будет решать проблему, но мне нужно развернуть веб-панели также с Scope= Site.

Так как решить эту проблему одним развертыванием?

Это было полезно?

Решение

Вы можете добавить вторую функцию в проект.В этом случае у вас будет один пакет решений с двумя функциями (сначала - это функция Scoped сайта, вторая - это веб-функция Scoped).В объекте Scoped Site вы можете включить ваши веб-части.Чтобы сделать это, вы должны нажать на папку «Функции» и выберите «Добавить новую опцию функций».

Другие советы

Я подозреваю, что вы связали ресивер события к шаблону библиотеки документов, который может также использовать ваш пользовательский список, поэтому приемник событий связан с обоими экземплярами списка.

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

    protected static void AddEventReceiverToList(string name, string className, SPList list, string assemblyName, SPEventReceiverType eventReceiverType, SPEventReceiverSynchronization eventReceiverSynchronization)
    {
        if (name == null) throw new ArgumentNullException("name");
        if (className == null) throw new ArgumentNullException("className");
        if (list == null) throw new ArgumentNullException("list");
        if (assemblyName == null) throw new ArgumentNullException("assemblyName");
        SPEventReceiverDefinitionCollection eventReceiverDefinitionCollection = list.EventReceivers;

        foreach (SPEventReceiverDefinition eventReceiverDefinition in eventReceiverDefinitionCollection)
        {
            if (eventReceiverDefinition.Name == name)
            {
                return;
            }
        }

        SPEventReceiverDefinition eventReceiver = eventReceiverDefinitionCollection.Add();
        eventReceiver.Name = name;
        eventReceiver.Synchronization = eventReceiverSynchronization;
        eventReceiver.Type = eventReceiverType;
        eventReceiver.Assembly = assemblyName;
        eventReceiver.Class = className;
        eventReceiver.Update();
    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top