从Request.Headers.Referrer获取参数值

时间:2016-10-31 16:50:11

标签: c# vb.net http-headers

我有一个网络方法(post),我尝试在用户调用网络服务后从userId获取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"

我是如何以.NET方式从引用者那里获取userId value的?

1 个答案:

答案 0 :(得分:0)

你的问题是指HttpUtility.ParseQueryString()。它无法满足您的要求。要使用此功能,您的URL将需要如下所示: " http://localhost/Omni/Activity-Feed/userId/55?userId=55" 获取用户ID。

根据您提供的网址,这将有效:

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();