在ASP.NET MVC中获取标头值

Aar*_*ron 19 asp.net-mvc http-headers

我需要捕获来自设备的HTTP用户代理标头,获取值并删除'uuid'然后可以使用此UUID将设备定向到正确的位置,以便为其提供与设备相关的文件.

在webforms中,我能够使用它

Request.ServerVariables["HTTP_USER_AGENT"]; //inside of Page_Load method
Run Code Online (Sandbox Code Playgroud)

我如何在MVC中解决这个问题?我还在学习MVC2所以请耐心等待:-)

提前致谢,

亚伦

She*_*Wei 17

如果在控制器中,您可以通过以下方式轻松获取标题:

Request.Headers.GetValues("XXX");
Run Code Online (Sandbox Code Playgroud)

如果名称不存在,则会抛出异常.


Ode*_*ded 13

你在控制器中以同样的方式做到这一点:

Request.ServerVariables.Get("HTTP_USER_AGENT");
Run Code Online (Sandbox Code Playgroud)

Request对象是ASP.NET,MVC的一部分.

例如,见这个.


Nic*_*sen 5

Request.Headers字典里应该有。


Jer*_*son 5

.Net 6 及以上版本,其工作原理如下:

Request.Headers.TryGetValue("Auth-Token", out StringValues headerValues);
string jsonWebToken = headerValues.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我更喜欢更简洁的新语法:

[HttpGet]
public async Task<IActionResult> GetAuth([FromHeader(Name = "Auth-Token")] string jwt) {
Run Code Online (Sandbox Code Playgroud)

没有连字符的标题-不需要名称,它们会自动映射:

[HttpGet]
public async Task<IActionResult> GetAuth([FromHeader]string host) {
Run Code Online (Sandbox Code Playgroud)