Я разрабатываю задание таймера SharePoint 2010 на C #, которое обновляет информацию о статусе сотрудников (доступны ли они в настоящее время или отсутствуют на работе), полученную из базы данных SQL, для обновления и сохранения в списке сотрудников SharePoint ( желаемый подход - иметь доступ к любому выбранному мной списку, а не только к одному заданному / жестко закодированному списку). Я создал пустой проект SharePoint, единственной функцией которого является задание таймера с моим классом приемника событий с настраиваемым кодом в методах FeatureActivated и FeatureDeactived. Метод Execute класса задания таймера получает данные с помощью SqlClient и сохраняет их в объекте словаря, значением ключа которого является идентификатор сотрудника, а значением - статус. Затем словарь используется для получения записей о сотрудниках в списке сотрудников SharePoint и обновления статуса.
Моя проблема в том, что независимо от того, какую область действия я выбрал для задания таймера, я не могу получить доступ к любому списку SharePoint, который мне нужен. Я пытался жестко закодировать URL-адреса для списков, используя SPWeb и SPSite, что угодно. Я проверил коллекцию сайтов для своего сайта, и у меня есть две коллекции сайтов («/», «testsitecollection»), а вторая вообще не используется.
Например, "SPWeb web = site.OpenWeb (); SPList list = web.Lists [" Сотрудники "];
Возникает исключение: «Список« Сотрудники »не может быть найден на http://www.mysite»
Мне было интересно, есть ли у кого-нибудь мнение по этому поводу. Что касается исходного кода, я следил за множеством примеров в Интернете, например: http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx
Все примеры, которые я нашел в Интернете для пользовательских заданий таймера, обновляют списки на главном сайте, такие как список задач.
Спасибо всем, кто добавляет свой вклад.
SPSecurity.RunWithElevatedPrivileges
? - person Lorenzo Dematté   schedule 14.02.2013