2009-03-06 6 views
2

실제 URL을 가져 와서 경로 자체에서 사용해야하는 프로젝트에서 작업 중입니다. 내가보고, 읽고 테스트하는 모든 것이 경로가 사이트 URL 다음의 항목을 잡을 수있게 해줍니다. 이것은 내가 시도한 것이며 단순히 사이트가 비어 있다고 말할 때마다 (이는 기본 공백으로 인한 것일 수 있습니다). 경로에 루트 URL도 활용할 수 있도록 허용하려면 뼈를 던져 주시겠습니까? 목표는 URL을 처리하고보기 내부에서 다른 용기로 나를 안내 할 하나의 웹 사이트입니다. 여기ASP.NET MVC의 경로에 웹 사이트 URL 전달

당신의 도움이 크게 감사합니다

  routes.MapRoute(
      "PageRouter", 
      "{site}/{*url}", 
      new { controller = "PageRouter", action = "RoutePage", site = "", url = "" } 
     ); 

로컬 호스트

외부 내가 시도 코드하지만 행운이다. 미리 감사드립니다.

답변

0

컨트롤러의 동작 내에서 HttpContext.Request.RawUrl을 사용하는 것은 어떻습니까? 나는 여기서 뭔가를 놓칠지도 모른다. 당신이 읽고 싶어하는 URL은 어디에서 오는가? 현재 페이지 또는 다른 페이지입니까?

+0

현재 페이지가있는 위치는 .... 근본적으로 소스 URL을 사용해야합니다. 경로의 내부에있는 템플릿을 결정합니다. 경로의 {site} 자리 표시자가 RawUrl 지나치게 멀리 떨어져있는 것처럼 보입니다. 사용 해보고 작동 방식에 대해 의견을 말하게됩니다. – dodegaard

+0

Nathan .... would it 대신 Global.asax.cs에서 처리하는 것이 좋을까요? 그 시점에서 HttpContext.Request에서 정보를 수집 할 수 있습니까? 사용자 정의 템플릿을 허용하기 위해 시스템에 들어오는 각 요청에 대해이 작업을 수행해야합니다. – dodegaard

0

네이선의 대답은 대답의 일부입니다. HttpContext.Request.RawUrl을 사용하면이 정보에 액세스 할 수 있지만 대신 Global.asax.cs 파일에 액세스 할 수 있습니다. 이 작업은 Application_BeginRequest 이벤트에서 수행됩니다. 그러나 트릭은 (누군가에게 좀 더 우아한 방법을 알고 있는지를 알려주십시오.)하지만 남은 경로 경로에 사용중인 URL을 삽입하여 MapRoute 메소드에서 가져올 수 있습니다. 따라서 "http://subdomain.domain.net/url"사이트는 "http://subdomain.domain.net/subdomain.domain.net/url"으로 표시되므로 MapRoute 명령의 {site} 부분에서 선택할 수 있습니다.이 정보는 사용자에게 표시되지 않지만 수신 된 정보를 기반으로 앱 내부에서 결정을 내릴 수있게합니다. URL : 루트 URL을 흡수하기 위해 미친 방법으로 보이는 경우 의견을 환영합니다.