2011-01-13 16 views
4

IgnoreRouteを設定して、特定の拡張子を持つすべてのファイルを無視する方法を教えてください。MVCルーティングで特定のファイル拡張子をすべて無視する方法

私はこれを行う場合は、すべての作品と私のFlashムービーが再生されます:

routes.Ignore("community/123/plan/456/video/moviename.flv"); 

だから、「123」と「456」のセクションでは、変数であり、任意の整数の番号を指定できます。明らかに、私は各映画のためにこれらの1つをしたくありません。また、123と456を可変プレースホルダに置き換える必要がありますか?これは1種類のディレクトリの一例に過ぎず、アプリケーション全体にFlashムービーが保存されていますので、は、どこにあるかにかかわらず.flv拡張子を持つファイルを無視するIgnoreRouteの値です

私は次のことを試してみた:

routes.IgnoreRoute("{file}.flv"); 
routes.IgnoreRoute("(.*).flv(.*)"); // Yeah I know, I'm horrible at RegEx 

私がこれまで仕事を得ることができる唯一のことは、特にFLVファイルへの完全な相対パスを渡しています。助言がありますか?

+3

[ASP.NETルーティング - ディレクトリに関係なく、特定の拡張子を持つファイルのルートを無視する](http://stackoverflow.com/questions/3228328/asp-net-routing-ignore-routes-for -files-specific-specific-extension-regardless-of) – Liam

答えて

5

チェックフィル・ハークことで、この記事:http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx

かいつまんで、我々はルートを試みるようにルーティングをしたくなかったが、画像などの静的ファイルの を要求します。残念ながら、これにより、ASP.NETの多くの機能がディスクに存在しない.axdファイルの要求を 要求することを思い出したときに、 という頭痛を引き起こしました。この問題を解決するには

、我々はRouteCollectionに新しい拡張メソッドが含まれ、ルートを作成 IgnoreRouteは、StopRoutingHandler ルートハンドラ(IRouteHandlerを実装するクラス)にマッピングされました。実際には、 "無視するルート"に一致する 要求はルーティングによって無視され、 通常のASP.NET処理は既存のhttpハンドラ のマッピングに基づいて行われます。

したがって、デフォルトのテンプレートでは、次のような ルートがあることがわかります。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

標準の.axd要求を処理します。

........

我々は唯一のキャッチすべてのルートを許可し、それが URLの末尾に起こる必要があります。ただし、次の方法をとることができます。この例では、I に次の2つのルートが追加されています。私はここでやっている何

routes.IgnoreRoute("{*allaspx}", new {[email protected]".*\.aspx(/.*)?"}); 
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"}); 

技術エイロンは、これらのルートにすべてのURLをマップ が、その後制約 辞書を経由して無視するためにどのルートを制限することである私を示しています。したがって、この場合、これらのルートは、 のfavicon.ico(すべてのディレクトリに関係なく)および.aspxファイルに対する 要求のすべての要求に一致します(したがって無視されます)。この リクエストを無視するようにルーティングするので、これらのリクエストの通常のASP.NET処理が行われます。

+0

routes.IgnoreRoute( "{* allflv}"、新しい{allflv = @ "。* \ .flv(/.*)?"}); <---これはトリックでした、ありがとうございました。 – Scott

+0

私の状況では、これは動作しません。 – AFetter

+0

@Coelhoあなたの状況を説明したり、コメントで説明が不十分な場合は新しい質問を投稿できますか? – Chandu

関連する問題