2014-02-01 3 views
2

Я разработал специальное задание таймера для SharePoint 2013 в visual studio 2012, которое отправляет уведомления по электронной почте. Проблема в том, что он отлично работает на сервере разработки.Sharepoint 2013 Custom Timer Работа, выполняемая на сервере разработки, но не на рабочем сервере

Я выполнил следующие шаги, чтобы отладить его на сервере разработки 1.) Разверните задание таймера на соответствующем сайте. 2.) Перезапустите службу таймера в services.msc 3.) Затем подключитесь к процессу OWSTIMER в визуальной студии. 4.) И, наконец, перейдите к Главному администрированию SharePoint 2013 -> Мониторинг-> Просмотрите определение задания и щелкните по соответствующему заданию таймера и скажите сейчас.

После этого точка останова попадает в визуальную студию по методу Execute(). Таким образом, на сервере разработки он работает.

Теперь на производственном сервере я не могу отлаживать использование визуальной студии, поэтому я развернул пакетное решение (.wsp).

Я вижу, что функция активирована в Администрировании коллекции сайтов-> Функции для создания сайтов.

Сейчас на сервере я следую следующие шаги 1.) Перезапуск службы таймера в services.msc 2.) И, наконец Перейти к SharePoint 2013 Central Администрирование-> Monitoring-> Обзор работы

Далее, чтобы проверить, является ли работа таймера работает на производственном сервере, или я не использовал PortalLog.LogString("Flow test1"); в начале метода Execute(). Теперь это выполняется на сервере разработки, и я вижу это сообщение в журналах SharePoint, но на рабочем сервере я не вижу «Flow Test1» в журналах после нажатия кнопки «Запустить сейчас» в центральном админе.

Может кто-нибудь предложить, в чем проблема и возможное решение?

+0

Работаете ли вы в списке истории работы в CA? Есть ли исключения в журналах ULS? – tomasdeml

+0

Нет Я могу видеть задание таймера только в определениях работы, я не вижу его ни в истории заданий, ни при выполнении заданий, а также в последнем времени выполнения N/A – luckydeveloper

+0

А как насчет ULS, любого исключения? Вы проверили, что все ваши сборки присутствуют в GAC? – tomasdeml

ответ

0

Мне кажется, что есть два вопроса:

  1. Вы должны использовать другой способ для входа LoggingService должен быть предпочтительным способом. Используйте WriteEvent для записи в EventLog или WriteTrace для записи в журнал ULS.
  2. Запуск работы. Убедитесь, что служба Owstimer.exe на всех веб-серверах перезагружена (это можно сделать с помощью этого powershell script). Я ожидаю, что вы правильно запланировали свою работу либо в сценарии powershell, либо в вашем приемнике функций.
+0

Я пробовал оба предложения, предоставленные вами, но я не могу найти какое-либо настраиваемое сообщение в журналах, а последнее время выполнения всегда показывает N/A, даже если задание таймера запланировано правильно – luckydeveloper

+0

Еще одно предложение. Попробуйте запустить свою работу, а затем проверить журнал ULS (sharepoint). Могут быть исключения типа нагрузки вашего класса заданий. Также проверьте, что ваш класс и метод Execute являются общедоступными. –

0

Вот несколько вещей, чтобы попробовать:

  • Перейти в центр администрирования и запустить задание таймера оттуда. Затем перейдите на страницу истории заданий и проверьте, успешно ли она завершена или нет. Если произошла ошибка, вы увидите сообщение об ошибке. Это даст вам понять, что происходит.
  • Как сказал Мазин, перезапустите службу таймера на всех серверах. После развертывания библиотеки DLL кэшируются процессом и не отображаются ваши изменения.
  • Просмотрите журналы SharePoint и найдите исключение или ошибку. Вы можете сузить свой поиск, выбрав временные рамки, на которых выполнялась ваша работа. Вы можете использовать следующий скрипт: PS

Get-SPLogEvent -StartTime "02/02/2014 11:00" -EndTime "02/02/2014 13:00" | Out-GridView

0

Как указано here, кажется, ваша сборка работа не развернута в GAC. Убедитесь, что сборка присутствует там.