2011-11-14 68 views
1

我有以下網址MVC剃刀路由.mp3文件

Call/GetAudio/f9715595-a540-4add-8419-f9cdf906c7ec.mp3 

現在的問題是上述.MP3文件實際上並不存在,而我希望它去「呼叫管理」,「GetAudio」功能,然後將返回字節數組作爲FileResult。

我想我需要在global.asax中爲此配置一些路由,這是可以實現的嗎?

基本上我希望所有.mp3文件都通過路由。

+0

只是通過您的控制器提供.mp3文件類型。然後你可以放下'.mp3'文件擴展名,因爲控制器只能提供mp3。您的路由將是一個正常的路由'{Controller}/{Action}/{id}' –

回答

1

所有路徑都將經過路由,而不管其擴展名。
(假設IIS正確配置爲使用ASP.Net作爲通配符處理程序)

只需製作一條正常路線。

請注意,沒有理由在URL中包含.mp3;只要確保在響應中包含適當的Content-Type,無論URL如何,您都應該這樣做。

+0

是的,我知道沒有理由包含.mp3文件(或URL中的任何擴展名)。然而,我需要這個非常具體的目的 - 我正在開發jquery player + jquery mobile for Android,並且從我收集它需要.mp3文件強制android下載文件,否則它認爲該url無效,並且會甚至沒有嘗試下載它 - 因此jquery播放器無法播放該文件,因爲它沒有下載。 – friend

+0

就像你說的,當我嘗試url時,我收到了IIS錯誤,提示「文件未找到」。構建IIS是實現這一目標的唯一方法嗎? – friend

+0

應將IIS配置爲對所有請求使用ASP.Net。如果不是,你應該解決這個問題。 – SLaks

0

這裏有一個類似的答案,只是它提供的圖像,而不是音頻文件,但原則是相同的。
Can an ASP.NET MVC controller return an Image?

簡單地創建一個控制器動作,服務於MP3的。然後,您可以放棄.mp3文件擴展名,因爲控制器將僅提供mp3。您的路由將是一條正常路由{Controller}/{Action}/{id}

+0

對不起,這不回答我的問題。另一篇文章希望URL不帶擴展名,以返回物理上存在的圖像 - 而我需要帶.mp3擴展名的網址 - 根據我的其他評論來欺騙android/jquery播放器。 – friend

+0

SLaks評論是現貨'但是,這聽起來不太可能。 Android應該閱讀Content-Type,而不是URL擴展名。 ' –