Вопрос

Проблема

В настоящее время я пытаюсь настроить запланированную задачу Sitecore в базе данных, используя графики и команды.

Пока я последовал http://sdn.sitecore.net/faq/administration/scheduled%20tasks.aspx Для большей части того, что мне было нужно. Их метод использует:public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem). Анкет Я предполагаю, что это элементы, передаваемые в элементе расписания, сам командный элемент и сам элемент расписания.

У меня есть функция выполнения, которая следует за тем же синтаксисом: protected void run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem). Анкет Я получаю исключение, когда оно работает в моих журналах. Связанный - это стек исключений: http://pastie.org/1847345, но вот вложенное исключение:

Exception: System.NullReferenceException 
Message: Object reference not set to an instance of an object. 
Source: fhservices at fhservices.twitterPull.run(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduleditem)

Я попробовал несколько различных комбинаций параметров, чтобы принять без повезения.

Планирование Web.config Раздел:

 <scheduling>
  <!-- Time between checking for scheduled tasks waiting to execute -->
  <frequency>00:01:00</frequency>
  <!-- Agent to process schedules embedded as items in a database -->
  <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="00:02:00">
    <param desc="database">core</param>
    <param desc="schedule root">/sitecore/system/tasks/schedules</param>
    <LogActivity>true</LogActivity>
  </agent>
 ...

Кто -нибудь знает параметры, которые Sitecore посылает методами, которые вызываются с помощью этого метода начальных заданий?

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

Решение

Согласно фрагменту, с которым вы связаны на SDN, я думаю, что вы создаете свой собственный метод, похожий на WriteToLogFile но нет Run(). Анкет Шаг 4 говорит:

Заполните необходимые поля:

Тип: CustomScheduleTasks.task1, CustomscheduleTasks

Метод: WriteTologFile

Тип указывает на пространство имен и файл сборки. Метод указывает метод для вызова указанного класса.

Ваша команда теперь готова к использованию в качестве запланированной задачи.

Так что вместо вашего Run() метод, назовите что -нибудь еще и установите в Method Поле команды в Sitecore. Run() является методом в базе данных из Sitecore, который работает.

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

Похоже, ваша задача на самом деле работает. Исключение ничего не упоминает о том, что не может найти свой метод, и исключение происходит из вашего метода задач. Попробуйте установить точку останова внутри метода и проверить, какой объект является нулевым.

Просто для справки, параметры, передаваемые для запланированной задачи, представляют собой элементы, указанные в поле элементов команды, элемент определения команды и элемент определения графика.

Ну ... ваше определение метода говорит «запустить», маленький r. Но в web.config вы запускаются, Big R. Sitecore использует здесь .NET Reflection, чтобы найти метод, поэтому он будет чувствителен к случаям.

У меня есть запланированные задачи в системе/задачах, а не в web.config. Работает как шарм.

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