2013-11-28 1 views
1

asp.net 라우팅 된 요청에서 "실제/라우팅되지 않은"URL을 가져 오는 일반적인 방법을 찾을 수 없습니다.asp.net 라우팅 된 URL을 역순으로 검색

에서

http://www.mysite.com/news/today 

얻을 : 같은

http://www.mysite.com/news.aspx?date=today 

내 코드 loooks :

var currentUrl = HttpContext.Current.Request.Url; 
//if url routing is used 
if (HttpContext.Current.Request.RequestContext.RouteData!=null) 
{ 
    currentUrl = ???    
} 

내가 GetVirtualPath으로 시도했지만 때로는 Microsoft.AspNet.FriendlyUrls

로, 예를 들어, 널 (null)을 반환
Request.RequestContext.RouteData.Route.GetVirtualPath(Request.RequestContext,Request.RequestContext.RouteData.Values) 

답변

1

내가 모든 상황에서 작동하는 것 같다이 솔루션을 찾을 다음의 QueryStrings를 들어

var currentUrl = Request.Url.AbsolutePath; 
if (Page.RouteData != null) 
{ 
    if (Page.RouteData.Route!=null) 
    { 
     var virtualPathData = Page.RouteData.Route.GetVirtualPath(Request.RequestContext, Page.RouteData.Values); 
     if (virtualPathData != null) 
     { 
      //asp.net routing 
      currentUrl = virtualPathData.VirtualPath; 
     } 
     else 
     { 
      //only for Microsoft.AspNet.FriendlyUrls 
      //GetFriendlyUrlFileVirtualPath never returns nulls 
      currentUrl = Request.GetFriendlyUrlFileVirtualPath().Replace("~", ""); 
     } 
    } 
} 

은 사용 Request.QueryString