【问题标题】:How to get TCM URI of multimedia type through file extension如何通过文件扩展名获取多媒体类型的TCM URI
【发布时间】:2012-09-26 07:05:01
【问题描述】:

我想通过将文件扩展名作为参数传递给方法来获取多媒体类型的 TCM URI。以下是我正在使用的代码,但出现了一些异常:-

private static string GetMultimediaTypeTCMURI(FileExtensionsList lFileExtensions)
{
    string lTCMURI = "";
    try
    {
        SessionAwareCoreService2010Client client 
                                          = new SessionAwareCoreService2010Client();
        client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
        client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
        client.Open();
        FileExtensionsList list = new FileExtensionsList();
        var mmType = client.GetSystemWideList(new MultimediaTypesFilterData())
              .Single(mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions);
        lTCMURI = mmType.Id;
    }
    catch (Exception e)
    {
        throw new Exception("Please check either Mimetype" 
              + lFileExtensions + "is wrong or Mimetype does not exist in SDL Tridion.");
    }
    return lTCMURI;

}

调用上述方法:-

FileExtensionsList list = new FileExtensionsList();
list.Add("js");

GetMultimediaTypeTCMURI(list);

上面的代码出现“序列不包含匹配元素”异常,请任何人建议如何执行此操作。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    Sequence contains no matching element 如果与您的 Linq 表达式不匹配,则会抛出。我看到的是您正在尝试匹配扩展名列表:

    mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions
    

    这意味着多媒体类型的文件扩展名应该与您的lFileExtensions完全匹配,甚至应该具有相同的顺序。 相反,请尝试仅按您需要的 1 个文件扩展名进行搜索:

    mt => ((MultimediaTypeData)mt).FileExtensions.Contains(myFileExtension)
    

    考虑同时使用SingleOrDefault 方法而不是Single。它不会抛出异常,但如果没有匹配则返回null。您可以稍后检查null的多媒体类型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2011-05-16
      • 2012-10-14
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多