我正在尝试在web api自托管主机中获取用户代理,我要么做错了,要么web api本身正在改变用户代理字符串 .
我尝试使用几种方法来获取字符串,它们都返回相同的结果,而不是例外的“Mozilla / 5.0(Windows NT 6.2; WOW64)AppleWebKit / 537.31(KHTML,像Gecko)Chrome / 26.0.1410.28 Safari /537.31“,我只得到”Mozilla / 5.0“ .
我试过了:
var header = request.Headers.SingleOrDefault(h => h.Key == "User-Agent").Value.First();
var header = request.Headers.UserAgent.SingleOrDefault().Product.ToString();
var header = request.Headers.GetValues("User-Agent").FirstOrDefault();
我做错了,它是自我主持人所以我没有上下文可以使用 .
5 回答
从WebAPI控制器中获取完整用户代理的绝对最简单的方法是:
它给出 exactly the same result 作为手动步骤,如下所示:
.NET Core 2.0()
像
Request.Headers["User-Agent"]
一样简单(以字符串形式返回);)哎呀,想出来,自己回答,以防其他人遇到这个问题 . 显然,用户代理被砍掉了 .
这给了我完整的用户代理:
如果您只想要浏览器名称,那么这对我有用,然后简单地写:
如果你想要客户端IP地址,那么只需:
var browserdetail = request.hostaddress
并使用它来生成用于验证的令牌密钥 .答案很简单,请尝试以下方法 . 它更短,不太可能破碎 .
它会给你一个类似于这个的字符串 .
文件:http://msdn.microsoft.com/en-us/library/system.web.httprequest.useragent.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2