2011-01-13 5 views
4

IgnoreRoute를 구성하여 특정 확장자를 가진 모든 파일을 무시하도록하는 방법은 무엇입니까? 내가 이렇게하면MVC 라우팅에서 특정 파일 확장자를 모두 무시하는 방법

, 모든 작품과 내 플래시 동영상이 재생됩니다 :

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

는 그래서 "123"과 "456"섹션 변수이며, 어떤 정수가 될 수 있습니다. 물론 각 영화마다 이들 중 하나를하고 싶지 않으며 123 및 456을 가변 자리 표시 자로 바꿀 필요가 없습니다. 이것은 하나의 유형의 디렉토리에 대한 예일 뿐이므로 응용 프로그램 전체에 플래시 무비가 저장되므로 은 계층 구조에 관계없이 .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

확인 필 Haack에 의해이 문서 : http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx

길고도 짧은 이야기, 우리가 경로에 시도 라우팅을하지 않았다는 이미지와 같은 정적 파일에 대한 를 요청합니다. 불행하게도이 때문에 많은 ASP.NET 기능이 디스크에 존재하지 않는 .axd 파일을 요청했다는 것을 기억할 때 이라는 두통을 낳았습니다.

는이 문제를 해결하려면, 우리는 경로가 StopRoutingHandler 경로 핸들러 (IRouteHandler를 구현하는 클래스) 매핑 생성 RouteCollection에 새로운 확장 방법, IgnoreRoute를 포함. 효과적으로 "무시 경로"와 일치하는 요청은 라우팅에서 무시되며 기존 HTTP 처리기 매핑을 기반으로 정상 ASP.NET 처리가 수행됩니다.

따라서 기본 템플릿에서 다음과 같은 경로가 있음을 알 수 있습니다.

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

표준 .axd 요청을 처리합니다.

........

우리는 하나의 포괄 경로를 허용하고는 URL의 끝에서 발생해야합니다. 그러나 다음 방법을 사용할 수 있습니다. 이 예에서 I 에는 다음 두 경로가 추가되었습니다.

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

는 내가 여기서 뭐하는거야 것은 기술 Eilon이 노선, 모든 URL을 매핑하지만 제약 사전을 통해 무시하는 경로 제한되는 저를 보여 주었다이다. 따라서이 경우이 경로는 에 대한 모든 요청 (어떤 디렉토리와도 관계 없음) 및 .aspx 파일에 대한 요청과 일치합니다 (따라서 무시됩니다). 이 요청을 무시하도록 라우팅을 말했기 때문에 이러한 요청에 대한 일반적인 ASP.NET 처리가 발생합니다.

+0

routes.IgnoreRoute ("{* allflv}", 새 {allflv = @ ". * \ .flv (/.*)?"})); <--- 트릭을 만들었습니다. 고마워요. – Scott

+0

내 경우에는 이것이 작동하지 않습니다. – AFetter

+0

@ 코엘호 설명이 충분하지 않은 경우 상황을 설명하거나 새로운 질문을 게시 할 수 있습니까? – Chandu

관련 문제