我正在使用正在尋找靜態路由的控制器/動作路由中的傳統swf文件。例如,它試圖下載該文件MVC路由靜態文件
http://localhost:59801/Resource/Details/ClearExternalPlaySeekMute.swf
當文件在根目錄下存在:
http://localhost:59801/ClearExternalPlaySeekMute.swf
我可以使用MapRoute
映射此網址到根目錄?
我正在使用正在尋找靜態路由的控制器/動作路由中的傳統swf文件。例如,它試圖下載該文件MVC路由靜態文件
http://localhost:59801/Resource/Details/ClearExternalPlaySeekMute.swf
當文件在根目錄下存在:
http://localhost:59801/ClearExternalPlaySeekMute.swf
我可以使用MapRoute
映射此網址到根目錄?
這應該適合你,但我認爲這將通過IIS更好。
routes.IgnoreRoute("{file}.swf");
我記得有一個SO帖子說是非常好的。如果我找到它,我一定會參考。
基本上同樣的問題... Using ASP.NET routing to serve static files
您可以使用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
送達作出。
我確實考慮過這一點,但是當我在本地調試時,如何使用IIS Express? – user547794
由於IIS express使用相同的IIS二進制文件(以及大多數iis功能),因此您可以使用url重寫 –
Url重寫是內置IIS Express - 因此完全不需要做任何事情來使IIS Express(其他比把我在你的web.config中展示給你的部分)。對於IIS,您必須安裝Url Rewrite模塊。但是,這與在服務器管理器中啓用該功能一樣簡單。 –
我實際上需要將該內容重定向到根目錄,而不僅僅是忽略文件路徑。該URL在swf文件中被硬編碼。 – user547794
這個答案是正確的,但我認爲你更大的問題是你正在使用ASP.NET MVC自帶的捕獲所有的路由定義,你不應該這樣做。您應該更具體地定義您的路線,以便靜態文件得到服務,而不會打你的路線。 –