Umbraco 11 程序化设置内容调度无效,寻求解决方法
Umbraco 11 代码设置内容调度失效的解决办法
问题诊断
你当前的代码存在两个关键问题:
ContentSchedule构造函数的第二个参数(文化名称)传入空字符串,Umbraco 11中调度需要明确指定文化(即使是默认文化,也应该传入内容对应的文化别名)。- 仅调用
contentService.Save无法确保调度生效,需要将内容发布,让调度关联到活跃的内容版本。
修正后的代码
// 获取内容对应的文化别名(多语言站点可替换为目标文化) var cultureAlias = doc.GetCulture().Name; // 创建过期调度项 var expireSchedule = new ContentSchedule(doc.Key, cultureAlias, expirationDate, ContentScheduleAction.Expire); // 构建调度集合 var contentSchedules = new ContentScheduleCollection(); contentSchedules.Add(expireSchedule); // 保存并发布内容,同时传入调度配置 contentService.SaveAndPublish(doc, contentSchedule: contentSchedules);
额外验证与注意事项
- 确保
expirationDate设置为未来时间,过去的时间不会触发调度逻辑。 - 可通过
contentService.GetContentSchedule(doc.Id)方法,验证调度是否已成功添加到内容中。 - 如果内容无需发布(仅草稿状态设置调度),需调用
contentService.Save时传入raiseEvents: true,触发调度系统的事件监听。
内容的提问来源于stack exchange,提问作者Random Developer
相关产品推荐
相关产品推荐

