0
我的sitecore网站订阅了内容更改的OnSave事件。当我登录内容管理器并更改任何字段时,该事件在网站上成功触发。现在,我试图做同样的事情,除了从独立的控制台应用程序触发此事件。以编程方式触发Sitecore事件
下面的代码更改了内容,我可以看到网站上的更改,但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;
}
}
}
我尝试使用Item.Editing,并没有有所作为。通过“在网上”我的意思是网站。现在我正在开发环境中工作,所以我们使用sitecore master(没有发布)。并且控制台应用程序也运行在同一台机器上 – webber
好的。那么我猜想线索会是,它看起来并不像你在任何“正常”类型的web上下文中运行Sitecore。我说这个的原因是;您正在为Console.WriteLine进行调试。我记得阅读一些关于如何让Sitecore在传统HttpContext外部运行的帖子(用于测试和嘲笑的目的) - 但是我看到的所有方法都严重地改变了Sitecore的功能。如果在这些方法的上下文中运行,我不希望正常的Sitecore事件触发和运行,就像您通常所期望的那样。 –
你能分享关于你的开发环境如何配置的任何信息吗?如果是这样,我可能会进一步提供帮助。 –