如何在创建新的PublisherException时获取Tridion LocalizableMessage的resourceName?

rob*_*rtc 4 tridion

我需要在存在特定条件时停止发布页面,例如,如果页面名称包含使用事件系统的"一个".此外,其他页面应继续发布.

我想使用PublisherException而不是一般的异常.

问题是我不知道LocalizableMessage的resourceName.有任何想法吗?

if (item.Title.ToString().Contains("one"))
{
     Localization.LocalizableMessage errResource = new Localization.LocalizableMessage("error");
     throw new PublisherException(errResource, new Exception("Can't get there from here!"));
} 
Run Code Online (Sandbox Code Playgroud)

Bar*_*man 7

事件系统可以停止发布,但是没有中间地带,当你抛出异常时,它会停止整个事务.

就像Puntero提到的那样,如果你想从一个Publish Transaction中删除一个项目,那就是自定义解析器进来的地方.从这里你无法与发布事务进行通信,但你可以访问Tridion Logger(事件日志):

Tridion.Logging.Logger.Write("your message string", "MyResolver", LoggingCategory.General, TraceEventType.Information);
Run Code Online (Sandbox Code Playgroud)

关于Event System中的LocalizableMessage,您应该能够执行以下操作:

throw new PublisherException(new LocalizableMessage(Properties.Resources.ResourceManager, "PagePublishErrorMessage"));
Run Code Online (Sandbox Code Playgroud)

其中resourceName指向您在Project中具有的String资源的名称.

  • 感谢您使用Tridion记录器的信息和建议.我也可以使用SignalR GUI扩展将信息传递给MessageCenter中的用户.但是,我仍然更喜欢5.3中的OnRenderPre事件,并使用异常来使单个项失败并在发布队列中包含异常消息. (2认同)