以编程方式触发Sitecore事件

时间:2014-06-16 19:35:03

标签: c# sitecore

我的sitecore网站订阅内容更改的OnSave事件。当我登录内容管理器并更改任何字段时,会在网站上成功触发事件。现在,我正在尝试做同样的事情,除了从独立的控制台应用程序触发此事件。

下面的代码更改了内容,我可以在网站上看到更改,但不会触发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 个答案:

答案 0 :(得分:1)

不推荐使用EditContext。编辑项目的正确和受支持的方法是使用Item.Editing.BeginEdit()和Item.Editing.EndEdit()。首先要尝试切换到那些,看看它是否有所作为。

同时;你说事件没有被触发"在网络上#34;。您是否在多服务器设置中?如果是这样,你需要考虑远程事件,如" item:saved"只会在触发事件的实际服务器上触发。