2014-06-16 4 views
0

Мой сайт sitecore подписывается на событие OnSave изменения контента. Когда я вхожу в диспетчер контента и меняю любое из полей, событие успешно запускается на веб-сайте. Теперь я пытаюсь сделать то же самое, кроме запуска этого события из автономного консольного приложения.Событие Trigger Sitecore programatically

Код ниже изменяет содержимое, и я могу видеть изменения на веб-сайте, но событие OnSave не запускается. Контекст редактирования не является тихим, поэтому он должен запускать событие, но это не так.

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

Pipeline.Start("initialize", new PipelineArgs(), true); 

// get database 
string domainUser = @"sitecore\admin"; 

if (Sitecore.Security.Accounts.User.Exists(domainUser)) 
{ 
    Sitecore.Security.Accounts.User user = 
    Sitecore.Security.Accounts.User.FromName(domainUser, false); 

    using (new Sitecore.Security.Accounts.UserSwitcher(user)) 
    { 
     var db = Factory.GetDatabase("master"); 
     Item ii = db.SelectSingleItem("/sitecore/content/Home"); 

     using (new EditContext(ii, true, false)) 
     { 
      String current = ii.Fields["Breadcrumb Title"].Value; 
      Console.WriteLine("Current value: " + current); 
      current += " e"; 
      Console.WriteLine("Changing to: " + current); 

      ii.Fields["Breadcrumb Title"].Value = current; 

     } 

    } 

} 

ответ

1

Использование EditContext устарело. Правильный и поддерживаемый способ редактирования элементов - использовать Item.Editing.BeginEdit() и Item.Editing.EndEdit(). Первое, что нужно попробовать - это переключиться на них и посмотреть, не изменилось ли это.

Между тем; вы говорите, что событие не запускается «в Интернете». Вы используете многосерверную настройку? Если это так, вам нужно рассмотреть удаленные события, так как «item: saved» будет запускаться только на самом сервере, на котором было инициировано событие.

+0

Я пробовал использовать Item.Editing, и это не помогло. «В Интернете» я имел ввиду сайт. Прямо сейчас я работаю в среде dev, поэтому мы используем sitecore master (ничего не опубликовано). И консольное приложение работает на том же компьютере, что и – webber

+0

Хорошо. Ну, я думаю, подсказка тогда была бы, это не похоже, что вы используете Sitecore в любом «обычном» виде веб-контекста. Причина, по которой я говорю это; вы делаете Console.WriteLine для своих целей отладки. Я помню, как читал некоторые сообщения о том, как заставить Sitecore работать за пределами традиционного HttpContext (для тестирования и издевательских целей), но все методы, которые я видел, сильно меняют возможности Sitecore. Я бы не ожидал, что нормальные события Sitecore будут запускаться и функционировать, как вы обычно ожидали, если они выполнялись в контексте этих методов. –

+0

Можете ли вы поделиться какой-либо информацией о настройке среды разработки? Если так, я, возможно, смогу помочь дальше. –

Смежные вопросы