试图在asp.net web api self host中从请求中获取用户代理

cas*_*tek 41 self-hosting asp.net-web-api

我正在尝试在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();
Run Code Online (Sandbox Code Playgroud)

我做错了,它是自我主持人所以我没有上下文可以使用.

Seb*_*son 75

从WebAPI控制器中获取完整用户代理的绝对最简单的方法是:

var userAgent = Request.Headers.UserAgent.ToString();
Run Code Online (Sandbox Code Playgroud)

它与执行手动步骤的结果完全相同:

// var headers = request.Headers.GetValues("User-Agent");
// var userAgent = string.Join(" ", headers);
Run Code Online (Sandbox Code Playgroud)


Ale*_*urt 8

.NET 核心 2.0(+)

Request.Headers["User-Agent"](以字符串形式返回)一样简单;)