Обработчик событий SharePoint 2010 - PullRequest
0 голосов
/ 11 ноября 2011

У меня кошмар, когда я пытаюсь отладить получатель событий из списка Sharepoint. Это код того, что я делаю:

//Add an event receiver to the list
list.EventReceivers.Add(SPEventReceiverType.ItemAdded, "DatasEvent, Version = 1.0.0.0, Culture = neutral, PublicKeyToken =  6f4db1e1fedbed57", "DatasEvent.DatasEventReceiver");

public override void ItemAdded(SPItemEventProperties properties)
{
    try
    {
        int itemIdSql;
        SPListItem item = properties.ListItem;
        ...
    }
    catch (SqlException ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

Если я установлю точку останова в приемнике событий, она не остановится.

Ответы [ 6 ]

2 голосов
/ 11 ноября 2011

Зайдите в вашу визуальную студию Debug -> Процесс прикрепления -> прикрепите все доступные w3wp.exe в списке. Теперь попробуйте активировать функцию в веб-браузере. Ваша точка останова должна быть загружена и нажата.

1 голос
/ 11 ноября 2011

Я лично предпочитаю добавлять сообщения System.diagnostic.debug.WriteLn () в код получателя событий и просматривать их с помощью DebugView на сервере.Присоединение к рабочим процессам каждый раз раздражает.

0 голосов
/ 28 декабря 2012

Вы должны включить отладку sharepoint в двух файлах web.config. Вы должны использовать Debugger.Launch (), чтобы остановить среду выполнения. Например. После запуска событий развертывания и активации (в коде EventReceiver есть команда Debugger.Launch ()), и VS просит вас отладить код.

Нет необходимости использовать «присоединение к процессу», но это еще один возможный способ отладки.

эти ссылки мне очень помогли

0 голосов
/ 27 декабря 2011

ItemAdded обрабатывает асинхронное событие, которое происходит после добавления элемента.Выполнение выполняется через задание таймера (а не в текущем рабочем процессе w3wp).Поэтому вы должны присоединиться к процессу OWSTIMER для его отладки.

0 голосов
/ 15 ноября 2011

Прежде всего убедитесь, что последняя версия сборки попадает в GAC. Для этого проще всего воспользоваться опцией «Развернуть» в контекстном меню проекта или просто нажать F5.

Тогда, пожалуйста, сообщите нам, где расположен этот код

// Добавить получатель события в список list.EventReceivers.Add (SPEventReceiverType.ItemAdded, "DatasEvent, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 6f4db1e1fedbed57", "DatasEvent.DatasEventReceiver");

если он помещен в приемник функций, убедитесь, что он активирован, прежде чем пытаться подключиться к w3wp.exe, который соответствует пулу приложений, которому соответствует целевое веб-приложение.

0 голосов
/ 11 ноября 2011

Я бы попробовал:

Debugger.Launch();

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

Я бы поставил его перед добавлением получателя события.

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