我想通过将文件扩展名作为参数传递给方法来获取多媒体类型的TCM。下面是我正在使用的代码,但我得到了一些异常:
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);我得到了“序列包含没有匹配的元素”异常与上述代码,任何人请建议如何做。
发布于 2012-09-26 15:16:40
如果没有与您的Linq表达式匹配,则抛出Sequence contains no matching element。我看到的是,您正在尝试匹配扩展名列表:
mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions这意味着多媒体类型的文件扩展名应该与您的lFileExtensions完全匹配,甚至应该具有相同的顺序。相反,尝试仅按所需的一个文件扩展名进行搜索:
mt => ((MultimediaTypeData)mt).FileExtensions.Contains(myFileExtension)也可以考虑使用SingleOrDefault方法而不是Single。它不会抛出异常,但如果没有匹配,则返回null。您可以稍后检查null的多媒体类型
https://stackoverflow.com/questions/12596309
复制相似问题