为什么使用REL时我的Tridion二进制链接不显示?

Dom*_*nin 6 tridion tridion-content-delivery tridion-2011

我正在生成Tridion二进制链接,如下所示:

  1. Razor TBB为二进制链接生成链接解析器语法
  2. 链接解析器TBB生成TCDL.

输出将作为输出类型REL的动态组件模板发布.发布目标指定ASP.NET.

我在代理数据库的COMPONENT_PRESENTATIONS表中看到的内容输出如下:

<tcdl:Link type="binary" origin="tcm:0-0-0" 
           destination="tcm:34-669" templateURI="tcm:0-0-0" 
           linkAttributes="" textOnFail="true" addAnchor="" 
           variantId="">Document2</tcdl:Link>
Run Code Online (Sandbox Code Playgroud)

所以你至少可以看到文字"Document2"

如果我手工制作二进制链接控件,<tridion:BinaryLink..../>这可以正常工作,但是上面列出的TCDL没有产生可见的输出.

可能出了什么问题?我接下来应该调查什么?

Ram*_*m G 7

我们注意到Link Resolver TBB没有为二进制类型生成正确案例的相同行为.它被生成为<tcdl:Link type="binary" ../>代替<tcdl:Link type="Binary" ../>(注意小写字母b而不是大写字母B,难以捕捉).REL TCDLTagRender区分大小写,并且不解析tcdl:link的小写类型:binary,您将在cd日志文件中看到警告消息(假设您将日志级别设置为警告或调试).

"WARN  LinkTagRenderer - Link type does not exist."
Run Code Online (Sandbox Code Playgroud)

解决方法是通过引入新的TBB 来替换小写的输出和binary大写Binary.我们将此作为TBB的一部分包括在内,以解决RTF字段二进制链接解析任何多媒体链接,如pdf,doc等.

您在TBB中使用二进制替换小写二进制文件,如下所示.

 string output = package.GetValue(Package.OutputName);
 output = output.Replace("type=\"binary\"", "type=\"Binary\"" );
Run Code Online (Sandbox Code Playgroud)