我目前正在尝试使用以下语法显示 SWF 文件src="@Html.C1().MediaUrl(b.SWFFile)"
但输出的路径是
src="/media/0f923295-713b-418d-afbf-17675cdb6d9e/Banner Ads/Flash/728x90_swf"
为什么 Composite C1 将文件扩展名更改为 _swf?我是否使用了不正确的函数来引用媒体文件?
我目前正在尝试使用以下语法显示 SWF 文件src="@Html.C1().MediaUrl(b.SWFFile)"
但输出的路径是
src="/media/0f923295-713b-418d-afbf-17675cdb6d9e/Banner Ads/Flash/728x90_swf"
为什么 Composite C1 将文件扩展名更改为 _swf?我是否使用了不正确的函数来引用媒体文件?
在内置媒体 url-s 中不使用扩展有两个原因:
1) 如果您运行的是 IIS6 或 IIS7 经典模式,IIS 可能无法将请求引导至 ASP.NET(由于扩展),因此 C1 将无法为其提供服务。
2)在IIS7的默认设置中有很多扩展名,这些扩展名的存在使得IIS返回404(如.config、.master和.cs)。
我猜你的 Flash 播放器没有播放文件的问题,这里报告了这个问题http://compositec1.codeplex.com/workitem/1379,它可能会在下一个版本中得到解决。
现在,我建议使用以下代码生成 flash url 作为解决方法
protected string GetMediaUrl(string mediaPath)
{
string[] parts = mediaPath.Split(new[] { ':' });
string mediaStore = parts[0];
Guid mediaId = new Guid(parts[1]);
string mediaUrl = MediaUrls.BuildUrl(new MediaUrlData { MediaStore = mediaStore, MediaId = mediaId, QueryParameters = new NameValueCollection() },
UrlKind.Public);
// Temporary fix, allows media player to receive a nice url with an extension
return mediaUrl.Replace("_jpg", ".jpg").Replace("_mov", ".mov").Replace("_m4v", ".m4v").Replace("_swf", ".swf");
}