Rob*_*ett 1 tridion tridion2009 tridion-content-delivery
我正在尝试检索多媒体组件的文件的二进制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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用二元元工厂:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用ComponentMetaFactory加载Component Meta数据.
关于为什么我无法加载Binary Meta的任何想法?我是在正确的轨道上吗?
抢
看起来你的第一个例子是从内部DLL(Tridion.ContentDelivery.Interop.dll)导入(自动生成的)方法.请不要使用它们并坚持使用Tridion.ContentDelivery命名空间(Tridion.ContentDelivery.dll)中的那些.
您可以在SDL Tridion World上找到CHM格式的Content Delivery .NET API的官方文档(单击链接,登录该站点并再次单击该链接).从这个文档来看这个例子:
//create a new BinaryMetaFactory instance:
BinaryMetaFactory binaryMetaFactory = new BinaryMetaFactory();
//find the metadata for the specified binary
BinaryMeta binaryMeta = binaryMetaFactory.GetBinaryMeta("tcm:1-123");
//print the path to the output stream:
if(binaryMeta!=null) {
Response.Write("Path of the binary: " + binaryMeta.UrlPath);
}
//Dispose the BinaryMetaFactory
binaryMetaFactory.Dispose();
Run Code Online (Sandbox Code Playgroud)
工厂类Tridion.ContentDelivery.Meta.BinaryMetaFactory来自Tridion.ContentDelivery.dll.我确实也找不到GetBinaryMeta该类中的方法,所以似乎代码示例中存在错误.您应该使用的最可能的方法是GetMeta.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |