如何在ASP.NET Core ApiController中使用X-SomeValue自定义请求头?
解决自定义请求头
X-SomeValue的绑定问题 因为C#的参数名不允许包含连字符,直接用X-SomeValue作为参数名会编译失败。要实现绑定X-SomeValue请求头,有两种实用方案:
方案一:显式指定请求头名称
在[FromHeader]特性中通过Name属性指定实际的请求头名称,参数名使用合法的C#标识符即可:
[ApiController] [Route("[controller]")] public class MyController : ControllerBase { [HttpPost] public IActionResult DoStuff([FromHeader(Name = "X-SomeValue")] string xSomeValue) { // 此处可通过xSomeValue获取请求头的值 return Ok(); } }
这种方式简单直接,适合单个自定义请求头的场景。
方案二:模型绑定多请求头
如果需要处理多个自定义请求头,可创建模型类,在属性上标注[FromHeader]并指定对应请求头名称:
public class CustomHeadersModel { [FromHeader(Name = "X-SomeValue")] public string SomeValue { get; set; } // 可添加更多自定义请求头属性 [FromHeader(Name = "X-AnotherValue")] public string AnotherValue { get; set; } } [ApiController] [Route("[controller]")] public class MyController : ControllerBase { [HttpPost] public IActionResult DoStuff(CustomHeadersModel headers) { // 通过headers.SomeValue获取X-SomeValue的值 return Ok(); } }
这种方式更适合多请求头场景,代码结构更整洁。
两种方案都能遵守自定义请求头使用X-前缀的最佳实践,同时符合C#语法规范。
内容的提问来源于stack exchange,提问作者Peter Poulsen
相关产品推荐
相关产品推荐

