Tridion 2011中的Session.GetObject返回不存在项的组件

Rei*_*Wit 5 tridion tridion-2011

我试图弄清楚如何检查自定义后端中的组件是否为空(例如,在Tridion中找不到).我只是没有看到如何检查这个,除了捕获错误.

Component comp = (Component)session.GetObject(base.ComponentUri);

if (component != null)
{
    bool isCheckedOut = component.IsCheckedOut;
}
else
{
    // how do I get in here!
}
Run Code Online (Sandbox Code Playgroud)

我100%确定uri是正确的('tcm:113-438134')并且100%确定Tridion中没有带有该URI的项目.上面的代码将在component.IsCheckedOut上抛出一个错误:

The item tcm:113-438134-16 does not exist.
Run Code Online (Sandbox Code Playgroud)

如何检查Tridion项目的存在?我已经尝试将演员放在最后,这没有多大帮助:

Component comp = session.GetObject(base.ComponentUri) as Component;
Run Code Online (Sandbox Code Playgroud)

我尝试过根本不使用可识别对象,但也没有任何区别.谁知道怎么做?

Nun*_*res 10

这是因为Tridion的延迟加载 - 如果URI似乎有效,它将永远不会返回null对象.您可以session.IsExistingObject(TcmUriOrWebdavUrl)用来检查对象是否存在.

和...

我相信你期待这个......

在自定义后端

您不能将TOM.NET API用于模板和事件系统以外的进程.请改用Core Service API.

  • 不,这是因为加载TOM.NET实际上不仅仅是加入Tridion的接口 - 它会在你的进程中加载​​Tridion.整个.通过它的事件加载器,队列管理,数据库连接池,多线程,COM实例和模板引擎等,官方模糊:http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_19AF6C2427DF4781A866981FA8D62192 (4认同)