Asp.Net 라우팅 : 여러 와일드 카드 경로를 무시하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/30302

문제

여러 와일드 카드 경로를 무시하고 싶습니다.asp.net mvc 미리보기 4와 함께 제공되는 항목 : 라코 디스

다음 항목도 추가하고 싶습니다. 라코 디스

하지만 내 프로그램에서 URL을 생성하는 일부 도우미를 망가 뜨리는 것 같습니다.생각?

도움이 되었습니까?

해결책

여기에는 두 가지 가능한 해결책이 있습니다.

  1. 무시해야하는 요청 만 해당 경로와 일치하도록하려면 무시 경로에 제약 조건을 추가합니다.다소 어색하지만 작동합니다.

    RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="content"});
    

  2. 콘텐츠 디렉토리에는 무엇이 있습니까?기본적으로 라우팅은 디스크에있는 파일을 라우팅하지 않습니다 (실제로 VirtualPathProvider를 확인 함).따라서 콘텐츠 디렉토리에 정적 콘텐츠를 넣는 경우 무시 경로가 필요하지 않을 수 있습니다.

다른 팁

매우 까다로울 수 있습니다.

경로 데이터를 경로에 매핑하는 방법을 찾으려고 할 때 시스템은 현재 필요한 모든 정보가 제공되는 항목을 찾을 때까지 하향식 검색을 한 다음 나머지 모든 것을 쿼리 매개 변수에 넣습니다.

'Content / {* pathInfo}'경로에 대한 필수 정보가 항상 완전히 충족되고 (이 경로에 필요한 데이터가 전혀 없음) 경로 목록의 상단에 있으므로 모든 매핑 시도가 이름이 지정되지 않은 경로는이 패턴과 일치하며 모든 URL은이를 기반으로합니다 ( "Content? action= foo & controller= bar")

안타깝게도 액션 루트로는이 문제를 해결할 방법이 없습니다. 명명 된 경로를 사용하는 경우 (예 : Html.ActionLink 대신 Html.RouteLink 선택) 일치시킬 경로의 이름을 지정할 수 있습니다. 덜 편리하지만 더 정확합니다.

IMO, 복잡한 경로로 인해 액션 라우팅 시스템이 기본적으로 무너집니다. 기본 경로가 아닌 다른 것이있는 애플리케이션에서는 항상 올바른 경로를 얻기 위해 이름이 지정된 경로 기반 URL 생성으로 되돌아갑니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top