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 で拡張機能を使用しない理由は 2 つあります。

1) IIS6 または IIS7 クラシック モードを実行している場合、IIS は要求を ASP.NET に送信しない可能性があり (拡張機能のため)、C1 はそれを処理できません。

2) IIS7 のデフォルト設定には多くの拡張子があり、それらが存在すると IIS は 404 を返します (.config、.master、.cs など)。

ファイルを再生できないフラッシュ プレーヤーの問題があると思います。この問題はhttp://compositec1.codeplex.com/workitem/1379で報告されており、次のリリースで解決される可能性があります。

今のところ、回避策として次のコードを使用してフラッシュ 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 に答える