3

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

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

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

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

4

1 回答 1

4

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

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

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

所以除了二进制文件之外的所有东西都在数据库中。

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

于 2013-02-07T19:27:02.327 回答