SDL*_*per 3 tridion tridion-2011
我想通过将文件扩展名作为参数传递给方法来获取多媒体类型的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;
}
Run Code Online (Sandbox Code Playgroud)
致电上述方法: -
FileExtensionsList list = new FileExtensionsList();
list.Add("js");
GetMultimediaTypeTCMURI(list);
Run Code Online (Sandbox Code Playgroud)
上面的代码我得到"序列包含无匹配元素"的例外,任何人都建议如何做到这一点.
Sequence contains no matching element
如果与您的Linq表达式不匹配,则抛出.我看到的是你正在尝试匹配扩展名列表:
mt => ((MultimediaTypeData)mt).FileExtensions == lFileExtensions
Run Code Online (Sandbox Code Playgroud)
这意味着多媒体类型的文件扩展名应该与您完全匹配lFileExtensions
,它甚至应该具有相同的顺序.相反,请尝试仅搜索您需要的1个文件扩展名:
mt => ((MultimediaTypeData)mt).FileExtensions.Contains(myFileExtension)
Run Code Online (Sandbox Code Playgroud)
考虑也使用SingleOrDefault
方法而不是Single
.它不会抛出异常,但null
如果没有匹配则返回.您可以稍后检查多媒体类型null
归档时间: |
|
查看次数: |
256 次 |
最近记录: |