我的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;
}
}
}
答案 0 :(得分:1)
不推荐使用EditContext。编辑项目的正确和受支持的方法是使用Item.Editing.BeginEdit()和Item.Editing.EndEdit()。首先要尝试切换到那些,看看它是否有所作为。
同时;你说事件没有被触发"在网络上#34;。您是否在多服务器设置中?如果是这样,你需要考虑远程事件,如" item:saved"只会在触发事件的实际服务器上触发。