【发布时间】:2012-05-28 17:22:30
【问题描述】:
我正在尝试检索作为动态组件演示文稿发布的多媒体组件文件的二进制 URL。
我可以在 Broker 数据库的 Binaries 表中看到 Url,但我似乎无法使用以下任一代码位获取二进制 url:
使用 SQLBinaryMetaHome:
using (var sqlBinMetaHome = new Com.Tridion.Broker.Binaries.Meta.SQLBinaryMetaHome())
{
int componentItemId = int.Parse(queryStringId.Split('-')[1]);
var binaryMeta = sqlBinMetaHome.FindByPrimaryKey(new TCDURI(publicationId, 16, componentItemId));
if (binaryMeta != null)
{
VideoBinaryUrl = binaryMeta.GetURLPath();
}
else
{
Logger.Log.ErrorFormat("Failed ot load via SQL Binary Meta {0}", queryStringId);
}
}
使用二进制元工厂:
using (var b = new BinaryMetaFactory())
{
var binaryMeta = b.GetMeta(queryStringId);
if (binaryMeta != null)
{
VideoBinaryUrl = binaryMeta.UrlPath;
}
else
{
Logger.Log.ErrorFormat("Failed to load binary meta {0}", queryStringId);
}
}
我可以使用 ComponentMetaFactory 加载组件元数据。
关于为什么我无法加载二进制元的任何想法?我在正确的轨道上吗?
罗伯
【问题讨论】:
-
多媒体组件是否在 Tridion Web UI 中显示“已发布”图标?
-
第二个代码片段最终做了什么?它会记录您的错误吗?还是 VideoBinaryUrl 只是 null/empty?
-
嗨弗兰克,都记录了错误。
-
好。那么至少不会因为坚持使用公共 API 而受到惩罚。 ;-) 那么 MMC 在 Web GUI 中是否显示已发布/地球图标?
-
是的,我可以通过直接查询数据库来查看元数据。上周早些时候我遇到了类似的问题,最终不得不使用过时的过滤 API。可能是许可问题或我的开发环境中未启动的服务?
标签: tridion tridion2009 tridion-content-delivery