2016-10-31 3 views
0

У меня есть веб-метод (post), и я пытаюсь получить userId значение из Request.Headers.Referrer после пользователя, называемого веб-службой.Получение значения параметра из Request.Headers.Referrer

При отладке:

?Request.Headers.Referrer.ToString 

"http://localhost/Omni/Activity-Feed/userId/55" 

Когда я отлаживать значение для OriginalString является

?HttpUtility.ParseQueryString(Request.Headers.Referrer.OriginalString) 
{http%3a%2f%2flocalhost%2fOmni%2fActivity-Feed%2fuserId%2f55} 
    System.Web.HttpValueCollection: {http%3a%2f%2flocalhost%2fOmni%2fActivity-Feed%2fuserId%2f55} 

Когда я пытаюсь получить значение USERID, как показано ниже, я получаю пустую строку:

?HttpUtility.ParseQueryString(Request.Headers.Referrer.Query).Item("userId") 
nothing 

?HttpUtility.ParseQueryString(Request.Headers.Referrer.Query).Get("userId") 

Nothing 

Сегменты:

?Request.Headers.Referrer.Segments.ToList 

Count = 5 
    (0): "/" 
    (1): "Omni/" 
    (2): "Activity-Feed/" 
    (3): "userId/" 
    (4): "55" 

Любые идеи, как я получаю userId value от реферера в .NET-способе?

ответ

0

Ваш вопрос относится к HttpUtility.ParseQueryString(). Это неверно для того, что вы пытаетесь сделать. Чтобы использовать эту функцию, ваш URL-адрес должен выглядеть примерно так: «http://localhost/Omni/Activity-Feed/userId/55?userId=55» , чтобы получить идентификатор пользователя.

Учитывая URL, который вы представили, что это будет работать:

string segment = Request.Headers.Referrer.Segments[Request.Headers.Referrer.Segments.Length-1]; 

В случае необходимости, найти положение UserId затем получить номер в следующей позиции:

System.Collections.Generic.List<string> urlSegments = new System.Collections.Generic.List<string>(Request.Headers.Referrer.Segments); 
int i = urlSegments.IndexOf("UserID"); 
string userID = urlSegments[i + 1].ToString(); 
+0

Обратите внимание это означает, что если userid находится в другом порядке, ваш код не будет работать. – alwaysVBNET

+0

также, я получаю информацию от headers.referrer – alwaysVBNET

+0

, если вы программируете веб-метод, это не тот порядок, который всегда будет таким же? –

Смежные вопросы