我有一个网络方法(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
的?
答案 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();