0

我目前正在尝试使用以下语法显示 SWF 文件src="@Html.C1().MediaUrl(b.SWFFile)"

但输出的路径是

src="/media/0f923295-713b-418d-afbf-17675cdb6d9e/Banner Ads/Flash/728x90_swf"

为什么 Composite C1 将文件扩展名更改为 _swf?我是否使用了不正确的函数来引用媒体文件?

4

1 回答 1

1

在内置媒体 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");
}
于 2012-09-12T21:18:24.783 回答