答案:.NET Web API 可通过 HttpContext.Request.Headers 读取请求头,支持 TryGetValue 安全获取 Authorization、X-Device-Id 等值;也可用索引访问 User-Agent;中间件中可预处理如 X-Api-Key 验证;频繁字段可用 ActionFilter 如 TenantFilter 自动提取 X-Tenant-Id。

.NET Web API 可以通过多种方式从 HTTP 请求头中读取数据,适用于获取自定义参数、身份令牌、设备信息等场景。以下是常用且实用的方法。
示例代码:
[HttpGet("info")]
public IActionResult GetInfo()
{
if (HttpContext.Request.Headers.TryGetValue("Authorization", out var authValue))
{
// 获取 Authorization 头
var token = authValue.ToString();
// 处理 token
}
if (HttpContext.Request.Headers.ContainsKey("X-Device-Id"))
{
var deviceId = HttpContext.Request.Headers["X-Device-Id"];
// 使用设备 ID
}
return Ok(new { Success = true });
}
示例:
var userAgent = HttpContext.Request.Headers["User-Agent"].ToString(); var customParam = HttpContext.Request.Headers["X-Custom-Header"].ToString();
示例中间件:
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
if (context.Request.Headers.TryGetValue("X-Api-Key", out var apiKey))
{
if (!IsValidApiKey(apiKey))
{
context.Response.StatusCode = 401;
await context.Response.WriteAsync("Invalid API Key");
return;
}
}
await next(context);
}
示例:ActionFilter 提取 X-Tenant-Id
public class TenantFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.HttpContext.Request.Headers.TryGetValue("X-Tenant-Id", out var tenantId))
{
// 存入 ViewBag 或依赖注入服务
context.ActionArguments["tenantId"] = tenantId.ToString();
}
base.OnActionExecuting(context);
}
}
基本上就这些。根据实际需求选择合适的方式,多数情况下直接使用 HttpContext.Request.Headers 就足够了,简单明了。注意别忘了做空值判断和安全性校验。
以上就是.NET Web API如何从请求头(Header)中获取数据的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号