2014-10-01 224 views
1

使用Asp.Net我正在捕獲請求的AngularJS路由,因爲它加載。路線是/FST/#/quickstart。我試圖捕捉這條路線有:HttpContext.Current.Request與Angular UI路由器

var currentUrl = HttpContext.Current.Request.RawUrl; 

然而,RawUrl不包含#/quickstart分部。在請求中似乎沒有任何東西可以告訴我完整的URL。我如何獲得目標網址?

+3

你不可錯過' #「在服務器的URL中。 – DavidG 2014-10-01 12:30:17

+1

可能的重複[什麼是URL中的#號](http://stackoverflow.com/questions/7909969/what-is-the-symbol-in-the-url) – DavidG 2014-10-01 12:31:23

+0

獲取哈希值沒有意義當我們使用angularJs進行開發時,部分在服務器端。散列'應該用於在客戶端執行路由,這可能會將解析的參數(如果有的話)發送到服務器端。 – 2014-10-04 03:05:41

回答

0

您可以使用$http攔截到當前路線作爲頭添加到您的Web API請求

$httpProvider.interceptors.push(['$q','$location' function($q, $location) { 
     return { 
      'request': function(config) { 
       config.headers.ClientSideUrl = $location.path(); 
       return config || $q.when(config); 
      }, 
      'requestError': function(rejection) { 
       return $q.reject(rejection); 
      }, 
      'response': function(response) { 
       return response || $q.when(response); 
      }, 
      'responseError': function(rejection) { 
       return $q.reject(rejection); 
      } 
     }; 

    }]); 

,然後訪問標題服務器端:

HttpContext.Current.Request.Headers.GetValues("ClientSideUrl").FirstOrDefault();