2017-11-02 9 views
0

이것은 어리석은 질문 일지 모르지만 어디서나 답을 찾을 수 없습니다. MVC 사이트의 컨트롤러와 매우 유사한 두 개의 경로가 있습니다. 하나의 경로에 ".html"이 추가되었습니다. ".html"이 선택 사항임을 지정하는 방법이 있습니까? 실제 라우팅의 측면에서 유용하지는 않습니다. 단지 존재할 수도 있고 존재하지 않을 수도 있습니다. 그리고 나는이 한 가지 차이점에 대해서만 별도의 경로를 갖는 것을 좋아하지 않습니다.ASP MVC 라우팅에서 매개 변수로 전달되지 않은 URL에 선택적 세그먼트를 어떻게 지정합니까?

routes.MapRoute(
    "Route1", 
    "somepath/{action}.html", 
    new 
    { 
     controller = "Test", 
     action = "Index" 
    }); 

routes.MapRoute(
    "Route2", 
    "somepath/{action}", 
    new 
    { 
     controller = "Test", 
     action = "Index" 
    }); 

이상적으로이 두 경로는 어떻게 든 하나로 통합 될 수 있습니다. 같은 뭔가 : 원하는 효과를 달성하기 위해 어떤 방법이 있는지 분명히

routes.MapRoute(
    "Route", 
    "somepath/{action}{*.html}", 
    new 
    { 
     controller = "Test", 
     action = "Index" 
    }); 

, 즉 작동하지 않습니다,하지만 난 궁금 하군요.

+0

URL에 '.html'이있을 때 예상대로 라우팅이 작동합니까? 또는 IIS가 파일을 제공하려고합니까? – Shyju

+0

라우팅은 제대로 작동하지만 단일 매핑으로 통합하는 방법이 있다면 궁금했습니다. – Andrew

답변

0

경로에서 정규식을 지정하여 처리 할 수 ​​있지만 더 나은 방법은 프레임 워크에서 처리하도록하는 것입니다. 보다 세련된 솔루션이 있지만이 문제를 가장 빨리 해결할 수있는 방법은 web.config에 추가하는 것입니다.

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer>