2013-01-02 131 views
5

我正在使用正在尋找靜態路由的控制器/動作路由中的傳統swf文件。例如,它試圖下載該文件MVC路由靜態文件

http://localhost:59801/Resource/Details/ClearExternalPlaySeekMute.swf 

當文件在根目錄下存在:

http://localhost:59801/ClearExternalPlaySeekMute.swf 

我可以使用MapRoute映射此網址到根目錄?

回答

1

這應該適合你,但我認爲這將通過IIS更好。

routes.IgnoreRoute("{file}.swf");

我記得有一個SO帖子說是非常好的。如果我找到它,我一定會參考。

基本上同樣的問題... Using ASP.NET routing to serve static files

+0

我實際上需要將該內容重定向到根目錄,而不僅僅是忽略文件路徑。該URL在swf文件中被硬編碼。 – user547794

+0

這個答案是正確的,但我認爲你更大的問題是你正在使用ASP.NET MVC自帶的捕獲所有的路由定義,你不應該這樣做。您應該更具體地定義您的路線,以便靜態文件得到服務,而不會打你的路線。 –

2

您可以使用url rewrite模塊中的IIS。一旦你安裝它只需添加以下重寫規則:

<system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Rewrite Static Flash file" stopProcessing="true"> 
      <match url="^Resource/Details/ClearExternalPlaySeekMute.swf$" /> 
      <action type="Rewrite" url="ClearExternalPlaySeekMute.swf" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

現在,當一個請求到/Resource/Details/ClearExternalPlaySeekMute.swf它將被/ClearExternalPlaySeekMute.swf送達作出。

+0

我確實考慮過這一點,但是當我在本地調試時,如何使用IIS Express? – user547794

+0

由於IIS express使用相同的IIS二進制文件(以及大多數iis功能),因此您可以使用url重寫 –

+0

Url重寫是內置IIS Express - 因此完全不需要做任何事情來使IIS Express(其他比把我在你的web.config中展示給你的部分)。對於IIS,您必須安裝Url Rewrite模塊。但是,這與在服務器管理器中啓用該功能一樣簡單。 –