BinaryFactory是否适用于文件系统上的二进制文件?

时间:2013-02-07 18:26:00

标签: tridion tridion-2011 tridion-content-delivery

我正在尝试使用以下代码读取已发布二进制文件的二进制数据:

Tridion.ContentDelivery.DynamicContent.BinaryFactory factory = new BinaryFactory();
BinaryData binaryData = factory.GetBinary(uri.ToString());

这很好,直到我将二进制文件存储在文件系统而不是代理数据库的环境中。现在,BinaryData始终为null,即使我确定该文件存在。

如果要像这样使用BinaryFactory,是否必须将二进制文件存储在数据库中?或者我错过了什么?

1 个答案:

答案 0 :(得分:4)

我刚刚在我的SDL Tridion 2011 SP1 HR1环境中运行了一些测试,并且当我的二进制文件位于文件系统上时,可以确认填充了BinaryData(即非空并包含值)。我使用了您的代码示例,并添加了在我的网站页面上使用的二进制文件的有效URI。我不确定我们的环境之间有什么不同,我唯一的想法是检查BinaryMeta是否已部署到您的Broker数据库(尽管如果这有所不同,我认为这是一个错误)。

我的cd_storage.xml节点的ItemTypes节点如下:

<ItemTypes defaultStorageId="defaultdb" cached="true">
    <Item typeMapping="Binary" storageId="defaultFile" cached="true"/>
</ItemTypes>

因此除了二进制文件之外的所有内容都在数据库中。

我不确定您使用的是什么版本的SDL Tridion(我不知道它是否会对此产生影响),但我最近听说自2011 SP1起不再支持在文件系统上存储任何元数据。